From 4fa5161b32fa6cfd47fa531b7ccb045709b7bc48 Mon Sep 17 00:00:00 2001 From: shafeeqd959 Date: Wed, 31 Jan 2024 13:26:06 +0530 Subject: [PATCH] added unit tests for early access header config --- .../src/interfaces/index.ts | 2 +- .../unit/commands/early-access-header.test.ts | 98 +++++++++++++++++++ .../test/unit/mock/index.ts | 7 ++ 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 packages/contentstack-config/test/unit/commands/early-access-header.test.ts diff --git a/packages/contentstack-config/src/interfaces/index.ts b/packages/contentstack-config/src/interfaces/index.ts index 4e8ad0c01a..3c164bac2e 100644 --- a/packages/contentstack-config/src/interfaces/index.ts +++ b/packages/contentstack-config/src/interfaces/index.ts @@ -14,5 +14,5 @@ export interface Region { name: string; cma: string; cda: string; - uiHost: string; + uiHost?: string; } diff --git a/packages/contentstack-config/test/unit/commands/early-access-header.test.ts b/packages/contentstack-config/test/unit/commands/early-access-header.test.ts new file mode 100644 index 0000000000..408b8892ea --- /dev/null +++ b/packages/contentstack-config/test/unit/commands/early-access-header.test.ts @@ -0,0 +1,98 @@ +import { expect, should } from 'chai'; +import { stub, spy } from 'sinon'; +import { configHandler } from '@contentstack/cli-utilities'; +import { cliux } from '@contentstack/cli-utilities'; +import Conf from 'conf'; +import { setEarlyAccessHeaderMockData } from '../mock/index'; +import { interactive } from '../../../src/utils/index'; + +import GetEarlyAccessHeaderCommand from '../../../src/commands/config/get/early-access-header'; +import SetEarlyAccessHeaderCommand from '../../../src/commands/config/set/early-access-header'; +import RemoveEarlyAccessHeaderCommand from '../../../src/commands/config/remove/early-access-header'; + + +const config = configHandler; +describe('Early access header command', function () { + let configSetStub; + let cliuxSuccessStub; + let configHandlerDeleteStub; + before(() => { + configSetStub = stub(configHandler, 'set').returns({} as Conf>); + cliuxSuccessStub = stub(cliux, 'success').callsFake(()=> {}); + configHandlerDeleteStub = stub(configHandler, 'delete').resolves(""); + }); + + after(() => { + // Restore the original method after each test + configSetStub.restore(); + cliuxSuccessStub.restore(); + configHandlerDeleteStub.restore(); + }); + + it('Set early access header: with all flags, should be successful', async function () { + const args = [ + '--header-alias', + setEarlyAccessHeaderMockData.flags.headerAlias, + '--header', + setEarlyAccessHeaderMockData.flags.header, + ]; + await SetEarlyAccessHeaderCommand.run(args); + expect(cliuxSuccessStub.calledOnce).to.be.true; + }); + + it('Set early access header: should prompt when header alias is not passed', async () => { + const askEarlyAccessHeaderAlias = stub(interactive, 'askEarlyAccessHeaderAlias').resolves(setEarlyAccessHeaderMockData.flags.headerAlias); + await SetEarlyAccessHeaderCommand.run(["--header", setEarlyAccessHeaderMockData.flags.header]); + expect(askEarlyAccessHeaderAlias.calledOnce).to.be.true; + askEarlyAccessHeaderAlias.restore(); + }); + + it('Set early access header: should prompt when header is not passed', async () => { + const askEarlyAccessHeaderAlias = stub(interactive, 'askEarlyAccessHeaderValue').resolves(setEarlyAccessHeaderMockData.flags.header); + await SetEarlyAccessHeaderCommand.run(["--header-alias", setEarlyAccessHeaderMockData.flags.headerAlias]); + expect(askEarlyAccessHeaderAlias.calledOnce).to.be.true; + askEarlyAccessHeaderAlias.restore(); + }); + + it('Get early access header: with all flags, should be successful', async function () { + const cliuxTableStub = stub(cliux, 'table'); + await GetEarlyAccessHeaderCommand.run([]); + expect(cliuxTableStub.calledOnce).to.be.true; + cliuxTableStub.restore(); + }); + + it('Remove early access header: with all flags, should be successful', async function () { + const configGetStub = stub(configHandler, 'get').resolves(setEarlyAccessHeaderMockData.flags.headerAlias); + const args = [ + '--header-alias', + setEarlyAccessHeaderMockData.flags.headerAlias, + '--yes' + ]; + await RemoveEarlyAccessHeaderCommand.run(args); + expect(configHandlerDeleteStub.calledOnce).to.be.true; + configGetStub.restore(); + }); + + it('Remove early access header: with only alias flag should prompt for confirmation', async function () { + const configGetStub = stub(configHandler, 'get').resolves(setEarlyAccessHeaderMockData.flags.headerAlias); + const confirmationStub = stub(interactive, 'askConfirmation').resolves(true); + const args = [ + '--header-alias', + setEarlyAccessHeaderMockData.flags.headerAlias, + ]; + await RemoveEarlyAccessHeaderCommand.run(args); + expect(confirmationStub.calledOnce).to.be.true; + configGetStub.restore(); + }); + + it('Remove early access header: without alias flag should prompt', async function () { + const configGetStub = stub(configHandler, 'get').resolves(setEarlyAccessHeaderMockData.flags.headerAlias); + const askHeaderAliasStub = stub(interactive, 'askEarlyAccessHeaderAlias').resolves(setEarlyAccessHeaderMockData.flags.headerAlias); + const args = [ + "--yes" + ]; + await RemoveEarlyAccessHeaderCommand.run(args); + expect(askHeaderAliasStub.calledOnce).to.be.true; + configGetStub.restore(); + }); +}); diff --git a/packages/contentstack-config/test/unit/mock/index.ts b/packages/contentstack-config/test/unit/mock/index.ts index b49cbfd01c..fe9eb7eba4 100644 --- a/packages/contentstack-config/test/unit/mock/index.ts +++ b/packages/contentstack-config/test/unit/mock/index.ts @@ -5,6 +5,13 @@ export const setConfigMockData = { }, }; +export const setEarlyAccessHeaderMockData = { + flags: { + headerAlias: 'taxonomy', + header: 'taxonomytestorg', + }, +}; + export const removeConfigMockData = { flags: { apiKey: 'abcd',