test: individual import/export for a particular config file
parent
1d67af1558
commit
a2ca88baf2
|
|
@ -1,10 +1,16 @@
|
|||
'use strict';
|
||||
|
||||
const fs = require('fs');
|
||||
const util = require('util');
|
||||
const exec = util.promisify(require('child_process').exec);
|
||||
|
||||
jest.setTimeout(20000);
|
||||
|
||||
const selectedConfig = 'admin-role.strapi-editor';
|
||||
const otherConfig = 'admin-role.strapi-author';
|
||||
const selectedConfigPath = `config/sync/${selectedConfig}.json`;
|
||||
const otherConfigPath = `config/sync/${otherConfig}.json`;
|
||||
|
||||
describe('Test the config-sync CLI', () => {
|
||||
afterAll(async () => {
|
||||
// Remove the generated files and the DB.
|
||||
|
|
@ -19,6 +25,46 @@ describe('Test the config-sync CLI', () => {
|
|||
expect(diffOutput).toContain('No differences between DB and sync directory');
|
||||
});
|
||||
|
||||
test('Partial export only exports the selected config', async () => {
|
||||
const selectedConfigBefore = fs.readFileSync(selectedConfigPath, 'utf8');
|
||||
const otherConfigBefore = fs.readFileSync(otherConfigPath, 'utf8');
|
||||
const selectedConfigData = JSON.parse(selectedConfigBefore);
|
||||
selectedConfigData.description = `${selectedConfigData.description} (partial export test)`;
|
||||
fs.writeFileSync(selectedConfigPath, JSON.stringify(selectedConfigData));
|
||||
|
||||
try {
|
||||
const { stdout: exportOutput } = await exec(`yarn cs export --partial ${selectedConfig} -y`);
|
||||
|
||||
expect(exportOutput).toContain(`Exported ${selectedConfig}`);
|
||||
expect(exportOutput).not.toContain(`Exported ${otherConfig}`);
|
||||
expect(JSON.parse(fs.readFileSync(selectedConfigPath, 'utf8'))).toEqual(JSON.parse(selectedConfigBefore));
|
||||
expect(fs.readFileSync(otherConfigPath, 'utf8')).toBe(otherConfigBefore);
|
||||
} finally {
|
||||
fs.writeFileSync(selectedConfigPath, selectedConfigBefore);
|
||||
}
|
||||
});
|
||||
|
||||
test('Partial import only imports the selected config', async () => {
|
||||
const selectedConfigBefore = fs.readFileSync(selectedConfigPath, 'utf8');
|
||||
const otherConfigBefore = fs.readFileSync(otherConfigPath, 'utf8');
|
||||
const selectedConfigData = JSON.parse(selectedConfigBefore);
|
||||
selectedConfigData.description = `${selectedConfigData.description} (partial import test)`;
|
||||
fs.writeFileSync(selectedConfigPath, JSON.stringify(selectedConfigData));
|
||||
|
||||
try {
|
||||
const { stdout: importOutput } = await exec(`yarn cs import --partial ${selectedConfig} -y`);
|
||||
const { stdout: diffOutput } = await exec('yarn cs diff');
|
||||
|
||||
expect(importOutput).toContain(`Imported ${selectedConfig}`);
|
||||
expect(importOutput).not.toContain(`Imported ${otherConfig}`);
|
||||
expect(diffOutput).toContain('No differences between DB and sync directory');
|
||||
expect(fs.readFileSync(otherConfigPath, 'utf8')).toBe(otherConfigBefore);
|
||||
} finally {
|
||||
fs.writeFileSync(selectedConfigPath, selectedConfigBefore);
|
||||
await exec(`yarn cs import --partial ${selectedConfig} -y`);
|
||||
}
|
||||
});
|
||||
|
||||
test('Import (delete)', async () => {
|
||||
// Remove a file to trigger a delete.
|
||||
await exec('mv config/sync/admin-role.strapi-editor.json .tmp');
|
||||
|
|
|
|||
Loading…
Reference in New Issue