From 00e77e77b08ff2ff8efcf35873f3db2a2dee48a5 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Fri, 28 Oct 2022 13:28:26 +0200 Subject: [PATCH] add tests --- .../lib/commands/__tests__/export.test.js | 57 +++++++++++++++++++ .../strapi/lib/commands/transfer/export.js | 8 +-- .../strapi/lib/commands/transfer/utils.js | 9 +++ 3 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 packages/core/strapi/lib/commands/__tests__/export.test.js create mode 100644 packages/core/strapi/lib/commands/transfer/utils.js diff --git a/packages/core/strapi/lib/commands/__tests__/export.test.js b/packages/core/strapi/lib/commands/__tests__/export.test.js new file mode 100644 index 0000000000..10ba50bf09 --- /dev/null +++ b/packages/core/strapi/lib/commands/__tests__/export.test.js @@ -0,0 +1,57 @@ +'use strict'; + +const exit = jest.spyOn(process, 'exit').mockImplementation(() => {}); +jest.spyOn(console, 'error').mockImplementation(() => {}); + +const mockDataTransfer = { + createLocalFileDestinationProvider: jest.fn(), + createLocalStrapiSourceProvider: jest.fn(() => {}), + createTransferEngine: jest.fn().mockReturnValue({ + transfer: jest.fn().mockReturnValue(Promise.resolve({})), + }), +}; +jest.mock('@strapi/data-transfer', () => { + return mockDataTransfer; +}); + +const defaultFileName = 'defaultFilename'; +const mockUtils = { + getDefaultExportBackupName: jest.fn().mockReturnValue(defaultFileName), +}; +jest.mock('../transfer/utils', () => { + return mockUtils; +}); + +const exportCommand = require('../transfer/export'); +const { getDefaultExportBackupName } = require('../transfer/utils'); + +describe('export', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + + it('uses path provided by user', async () => { + const filename = 'testfile'; + await exportCommand({ output: filename }); + expect(mockDataTransfer.createLocalFileDestinationProvider).toHaveBeenCalledWith( + expect.objectContaining({ + file: { path: filename }, + }) + ); + + expect(getDefaultExportBackupName).not.toHaveBeenCalled(); + expect(exit).toHaveBeenCalled(); + }); + + it('uses default path if not provided by user', async () => { + await exportCommand({}); + expect(mockDataTransfer.createLocalFileDestinationProvider).toHaveBeenCalledWith( + expect.objectContaining({ + file: { path: defaultFileName }, + }) + ); + + expect(getDefaultExportBackupName).toHaveBeenCalled(); + expect(exit).toHaveBeenCalled(); + }); +}); diff --git a/packages/core/strapi/lib/commands/transfer/export.js b/packages/core/strapi/lib/commands/transfer/export.js index 98444951f0..512f882fd7 100644 --- a/packages/core/strapi/lib/commands/transfer/export.js +++ b/packages/core/strapi/lib/commands/transfer/export.js @@ -8,8 +8,7 @@ const { // eslint-disable-next-line import/no-unresolved, node/no-missing-require } = require('@strapi/data-transfer'); const strapi = require('../../Strapi'); - -const getDefaultExportBackupName = () => `strapi-backup`; +const { getDefaultExportBackupName } = require('./utils'); const logger = console; @@ -25,7 +24,7 @@ module.exports = async (args) => { // To file const outputOptions = { file: { - path: args.output || getDefaultExportBackupName(), + path: args.output ?? getDefaultExportBackupName(), }, encryption: { enabled: args.encrypt, @@ -36,7 +35,7 @@ module.exports = async (args) => { }, }; const destination = createLocalFileDestinationProvider(outputOptions); - + console.log('outputoptions', outputOptions); // create transfer engine const engine = createTransferEngine(source, destination, { strategy: 'restore', @@ -45,6 +44,7 @@ module.exports = async (args) => { try { const result = await engine.transfer(); + if (!result?.destination?.path) throw new Error('Export file not created'); logger.log( 'Export process has been completed successfully! Export archive is in %s', diff --git a/packages/core/strapi/lib/commands/transfer/utils.js b/packages/core/strapi/lib/commands/transfer/utils.js new file mode 100644 index 0000000000..f0ef368f84 --- /dev/null +++ b/packages/core/strapi/lib/commands/transfer/utils.js @@ -0,0 +1,9 @@ +'use strict'; + +const getDefaultExportBackupName = () => { + return 'strapi-backup'; +}; + +module.exports = { + getDefaultExportBackupName, +};