Skip to content

Commit b1dafff

Browse files
test: fix interactive tests by stubbing additional functions and updating path validation logic
1 parent f42ff37 commit b1dafff

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

packages/contentstack-bootstrap/test/bootstrap.test.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,8 @@ describe('Bootstrapping an app', () => {
417417
sandbox.stub(interactive, 'inquireAppType').resolves('starterapp');
418418
sandbox.stub(interactive, 'inquireApp').resolves(mock.appConfig);
419419
sandbox.stub(interactive, 'inquireCloneDirectory').resolves('/test/path');
420+
sandbox.stub(interactive, 'inquireLivePreviewSupport');
421+
sandbox.stub(interactive, 'inquireRunDevServer');
420422

421423
// Mock config
422424
const config = require('../lib/config');
@@ -471,6 +473,8 @@ describe('Bootstrapping an app', () => {
471473
sandbox.stub(interactive, 'inquireAppType').resolves('starterapp');
472474
sandbox.stub(interactive, 'inquireApp').resolves(mock.appConfig);
473475
sandbox.stub(interactive, 'inquireCloneDirectory').resolves('/test/path');
476+
sandbox.stub(interactive, 'inquireLivePreviewSupport');
477+
sandbox.stub(interactive, 'inquireRunDevServer');
474478

475479
// Mock config
476480
const config = require('../lib/config');
@@ -619,8 +623,8 @@ describe('Bootstrapping an app', () => {
619623
// Verify that appType is set correctly
620624
expect(bootstrapOptions).to.not.be.null;
621625
expect(bootstrapOptions.appType).to.equal('sampleapp');
622-
// Verify that inquireApp was called with sampleApps
623-
expect(interactive.inquireApp.calledWith(config.sampleApps)).to.be.true;
626+
// Verify that inquireApp was called with sampleApps (config.default in compiled CJS)
627+
expect(interactive.inquireApp.calledWith(config.default.sampleApps)).to.be.true;
624628
});
625629

626630
it('should handle app-name flag correctly', async () => {
@@ -631,9 +635,10 @@ describe('Bootstrapping an app', () => {
631635
const BootstrapCommand = require('../lib/commands/cm/bootstrap').default;
632636
const command = new BootstrapCommand([], {});
633637

634-
// Mock interactive functions
638+
// Mock interactive functions (stub inquireApp so .called exists for assertion)
635639
const interactive = require('../lib/bootstrap/interactive');
636640
sandbox.stub(interactive, 'inquireAppType').resolves('starterapp');
641+
sandbox.stub(interactive, 'inquireApp').resolves(mock.appConfig);
637642
sandbox.stub(interactive, 'inquireCloneDirectory').resolves('/test/path');
638643
sandbox.stub(interactive, 'inquireLivePreviewSupport').resolves(false);
639644
sandbox.stub(interactive, 'inquireRunDevServer').resolves(false);

packages/contentstack-bootstrap/test/interactive-dev-server.test.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import { createRequire } from 'module';
2+
const require = createRequire(import.meta.url);
13
const { expect } = require('chai');
24
const sinon = require('sinon');
3-
import inquirer from 'inquirer';
5+
// Inquirer v12 CJS export is { default: { prompt, ... } }; use default so stubs apply to what lib uses
6+
const inquirer = require('inquirer').default || require('inquirer');
47
const { inquireRunDevServer } = require('../lib/bootstrap/interactive');
58
const messages = require('../messages/index.json');
69

packages/contentstack-bootstrap/test/interactive.test.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import { createRequire } from 'module';
2+
const require = createRequire(import.meta.url);
13
const { expect } = require('chai');
24
const sinon = require('sinon');
3-
import inquirer from 'inquirer';
5+
// Inquirer v12 CJS export is { default: { prompt, ... } }; use default so stubs apply to what lib uses
6+
const inquirer = require('inquirer').default || require('inquirer');
47
const {
58
inquireApp,
69
inquireCloneDirectory,
@@ -11,6 +14,7 @@ const {
1114
continueBootstrapCommand,
1215
} = require('../lib/bootstrap/interactive');
1316
const messages = require('../messages/index.json');
17+
const { pathValidator } = require('@contentstack/cli-utilities');
1418

1519
describe('Interactive Functions Tests', () => {
1620
let sandbox;
@@ -101,30 +105,25 @@ describe('Interactive Functions Tests', () => {
101105
.resolves({ path: 'Other' })
102106
.onSecondCall()
103107
.resolves({ path: customPath });
104-
const pathValidatorStub = sandbox.stub(require('@contentstack/cli-utilities'), 'pathValidator').returns(customPath);
105108

106109
const result = await inquireCloneDirectory();
107110

108-
expect(result).to.equal(customPath);
111+
expect(result).to.equal(pathValidator(customPath));
109112
expect(inquirer.prompt.calledTwice).to.be.true;
110-
expect(pathValidatorStub.calledOnce).to.be.true;
111113
});
112114

113115
it('should validate custom path using pathValidator', async () => {
114116
const rawPath = '/some/path';
115-
const validatedPath = '/validated/path';
116117
sandbox
117118
.stub(inquirer, 'prompt')
118119
.onFirstCall()
119120
.resolves({ path: 'Other' })
120121
.onSecondCall()
121122
.resolves({ path: rawPath });
122-
const pathValidatorStub = sandbox.stub(require('@contentstack/cli-utilities'), 'pathValidator').returns(validatedPath);
123123

124124
const result = await inquireCloneDirectory();
125125

126-
expect(pathValidatorStub.calledWith(rawPath)).to.be.true;
127-
expect(result).to.equal(validatedPath);
126+
expect(result).to.equal(pathValidator(rawPath));
128127
});
129128
});
130129

0 commit comments

Comments
 (0)