Skip to content

Commit

Permalink
Merge pull request #1274 from contentstack/tests/CS-43313
Browse files Browse the repository at this point in the history
added unit tests for early access header config
  • Loading branch information
netrajpatel authored Feb 1, 2024
2 parents 10da5f1 + 2c8f2eb commit b20e9ba
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,6 @@ describe('base-branch command', function () {
const branchStub = stub(cliux, 'table').callsFake(() => {});
await BranchGetCommand.run([]);
expect(branchStub.calledOnce).to.be.true;
branchStub.restore();
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
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<Record<string, unknown>>);
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();
confirmationStub.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();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ describe('Region command', function () {
name: 'test',
cma: 'https://api.contentstack.com',
cda: 'https://cda.contentstack.com',
uiHost: '',
};
let cliuxPrintStub;
beforeEach(function () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,10 @@ describe('Delete config', () => {
const config = configHandler;
const getConfig = config.get(`baseBranch.${removeConfigMockData.flags.apiKey}`);

const askConfirmation = stub(interactive, 'askConfirmation').calledOnce;
const askConfirmation = stub(interactive, 'askConfirmation');
const showSuccess = stub(cliux, 'success');
await RemoveBranchConfigCommand.run(['--stack-api-key', removeConfigMockData.flags.apiKey]);
if (getConfig && askConfirmation) expect(showSuccess.calledOnce).to.be.true;
if (getConfig && askConfirmation.calledOnce) expect(showSuccess.calledOnce).to.be.true;
askConfirmation.restore();
});
});
7 changes: 7 additions & 0 deletions packages/contentstack-config/test/unit/mock/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ export const setConfigMockData = {
},
};

export const setEarlyAccessHeaderMockData = {
flags: {
headerAlias: 'taxonomy',
header: 'taxonomytestorg',
},
};

export const removeConfigMockData = {
flags: {
apiKey: 'abcd',
Expand Down

0 comments on commit b20e9ba

Please sign in to comment.