From dd6e2f6c81ada595d46762ab2cca3a913c72967c Mon Sep 17 00:00:00 2001 From: Boaz Poolman Date: Sun, 22 Oct 2023 12:36:28 +0200 Subject: [PATCH] chore: Add more integration tests for create/update/delete in CLI --- playground/__tests__/cli.test.js | 41 ++++++++++++++++++++++++-------- playground/config/plugins.js | 1 + 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/playground/__tests__/cli.test.js b/playground/__tests__/cli.test.js index 8c9a86d..e15f4f3 100644 --- a/playground/__tests__/cli.test.js +++ b/playground/__tests__/cli.test.js @@ -13,20 +13,41 @@ describe('Test the config-sync CLI', () => { }); test('Export', async () => { - const { stdout } = await exec('yarn cs export -y'); - expect(stdout).toContain('Finished export'); + const { stdout: exportOutput } = await exec('yarn cs export -y'); + expect(exportOutput).toContain('Finished export'); + const { stdout: diffOutput } = await exec('yarn cs diff'); + expect(diffOutput).toContain('No differences between DB and sync directory'); }); - test('Import', async () => { - await exec('rm -rf config/sync/admin-role.strapi-editor.json'); - const { stdout } = await exec('yarn cs import -y'); - expect(stdout).toContain('Finished import'); + + test('Import (delete)', async () => { + // Remove a file to trigger a delete. + await exec('mv config/sync/admin-role.strapi-editor.json .tmp'); + const { stdout: importOutput } = await exec('yarn cs import -y'); + expect(importOutput).toContain('Finished import'); + const { stdout: diffOutput } = await exec('yarn cs diff'); + expect(diffOutput).toContain('No differences between DB and sync directory'); + }); + test('Import (update)', async () => { + // Update a core-store file. + await exec('sed -i \'s/"description":"",/"description":"test",/g\' config/sync/core-store.plugin_content_manager_configuration_content_types##plugin##users-permissions.user.json'); + // Update a file that has relations. + await exec('sed -i \'s/{"action":"plugin::users-permissions.auth.register"},//g\' config/sync/user-role.public.json'); + const { stdout: importOutput } = await exec('yarn cs import -y'); + expect(importOutput).toContain('Finished import'); + const { stdout: diffOutput } = await exec('yarn cs diff'); + expect(diffOutput).toContain('No differences between DB and sync directory'); }); - test('Diff', async () => { - const { stdout } = await exec('yarn cs diff'); - expect(stdout).toContain('No differences between DB and sync directory'); + test('Import (create)', async () => { + // Add a file to trigger a creation. + await exec('mv .tmp/admin-role.strapi-editor.json config/sync/'); + const { stdout: importOutput } = await exec('yarn cs import -y'); + expect(importOutput).toContain('Finished import'); + const { stdout: diffOutput } = await exec('yarn cs diff'); + expect(diffOutput).toContain('No differences between DB and sync directory'); }); + test('Non-empty diff returns 1', async () => { - await exec('rm -rf config/sync/admin-role.strapi-author.json'); + await exec('rm -rf config/sync/admin-role.strapi-editor.json'); // Work around Jest not supporting custom error matching. // https://github.com/facebook/jest/issues/8140 let error; diff --git a/playground/config/plugins.js b/playground/config/plugins.js index 8594e9a..e321c68 100644 --- a/playground/config/plugins.js +++ b/playground/config/plugins.js @@ -3,6 +3,7 @@ module.exports = { enabled: true, config: { importOnBootstrap: false, + minify: true, }, }, };