UNPKG

@contentstack/cli-variants

Version:

Variants plugin

81 lines (69 loc) 3.27 kB
import { expect } from '@oclif/test'; import { FsUtility } from '@contentstack/cli-utilities'; import { fancy } from '@contentstack/cli-dev-dependencies'; import exportConf from '../mock/export-config.json'; import { Export, ExportConfig, VariantHttpClient, VariantsOption } from '../../../src'; describe('Variant Entries Export', () => { let config: ExportConfig; const exportEntryData = { locale: 'en-us', contentTypeUid: 'CT-ID', entries: [{ uid: 'E-UID-1', title: 'Entry 1' }], }; const test = fancy .stdout({ print: process.env.PRINT === 'true' || false }) .stub(FsUtility.prototype, 'completeFile', () => {}) .stub(FsUtility.prototype, 'writeIntoFile', () => {}) .stub(FsUtility.prototype, 'createFolderIfNotExist', () => {}); beforeEach(() => { config = exportConf as unknown as ExportConfig; }); describe('exportVariantEntry method', () => { test .stub(VariantHttpClient.prototype, 'variantEntries', async () => {}) .spy(VariantHttpClient.prototype, 'variantEntries') .spy(FsUtility.prototype, 'completeFile') .spy(FsUtility.prototype, 'createFolderIfNotExist') .it('should call export variant entry method (API call)', async ({ spy }) => { let entryVariantInstace = new Export.VariantEntries(config); await entryVariantInstace.exportVariantEntry(exportEntryData); expect(spy.variantEntries.callCount).to.be.equals(1); expect(spy.completeFile.callCount).to.be.equals(1); expect(spy.createFolderIfNotExist.callCount).to.be.equals(1); expect(spy.completeFile.alwaysCalledWith(true)).to.be.true; }); test .stub(VariantHttpClient.prototype, 'variantEntries', async (...args: any) => { const { callback } = args[0] as VariantsOption; if (callback) { callback([{ uid: 'E-UID-1', title: 'Entry 1' }]); } }) .spy(FsUtility.prototype, 'writeIntoFile') .it('should write data in files (As chunk)', async ({ spy }) => { let entryVariantInstace = new Export.VariantEntries(config); await entryVariantInstace.exportVariantEntry(exportEntryData); expect(spy.writeIntoFile.callCount).to.be.equals(1); expect(spy.writeIntoFile.alwaysCalledWith([{ uid: 'E-UID-1', title: 'Entry 1' }])).to.be.true; }); test .stub(VariantHttpClient.prototype, 'variantEntries', async (...args: any) => { const { callback } = args[0] as VariantsOption; if (callback) { callback([]); // NOTE API callback with empty response } }) .spy(FsUtility.prototype, 'writeIntoFile') .spy(VariantHttpClient.prototype, 'variantEntries') .it( 'should skip write data in files (Empty data check validation), should set default file chunk 1MB if chunk size is not passed in config', async ({ spy }) => { config.modules.variantEntry.chunkFileSize = null as any; let entryVariantInstace = new Export.VariantEntries(config, () => {}); await entryVariantInstace.exportVariantEntry(exportEntryData); expect(spy.writeIntoFile.callCount).to.be.equals(0); expect(spy.variantEntries.callCount).to.be.equals(1); }, ); }); });