From 2c8c877cff82df1c792146f05a798f8eacfc123d Mon Sep 17 00:00:00 2001 From: raj pandey Date: Fri, 17 Apr 2026 13:17:32 +0530 Subject: [PATCH] fixed the test report generation issue --- packages/contentstack-clone/.mocharc.json | 2 +- .../test/helpers/stub-ora.js | 55 +++++++++++++++++++ .../test/lib/util/clone-handler.stack.test.ts | 7 +-- 3 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 packages/contentstack-clone/test/helpers/stub-ora.js diff --git a/packages/contentstack-clone/.mocharc.json b/packages/contentstack-clone/.mocharc.json index bb4cdd79..3cabdcf2 100644 --- a/packages/contentstack-clone/.mocharc.json +++ b/packages/contentstack-clone/.mocharc.json @@ -1,5 +1,5 @@ { - "require": ["test/helpers/init.js", "ts-node/register", "source-map-support/register", "test/helpers/mocha-root-hooks.js"], + "require": ["test/helpers/stub-ora.js", "test/helpers/init.js", "ts-node/register", "source-map-support/register", "test/helpers/mocha-root-hooks.js"], "watch-extensions": [ "ts" ], diff --git a/packages/contentstack-clone/test/helpers/stub-ora.js b/packages/contentstack-clone/test/helpers/stub-ora.js new file mode 100644 index 00000000..64cdd6c6 --- /dev/null +++ b/packages/contentstack-clone/test/helpers/stub-ora.js @@ -0,0 +1,55 @@ +/** + * Replace `ora` with a no-op spinner before any test file loads application code. + * Real ora keeps timers / TTY animation and can leave the process hanging after tests + * (e.g. "Fetching Branches") even when assertions pass. + * + * Must be listed first in `.mocharc.json` `require` so it runs before `ts-node/register` + * and test imports. + */ +'use strict'; + +const oraPath = require.resolve('ora'); +const originalOra = require(oraPath); + +function createNoopSpinner() { + const api = { + start() { + return api; + }, + stop() { + return api; + }, + succeed() { + return api; + }, + fail() { + return api; + }, + clear() { + return api; + }, + text: '', + isSpinning: false, + }; + return api; +} + +function noopOraFactory() { + return createNoopSpinner(); +} + +if (typeof originalOra.promise === 'function') { + noopOraFactory.promise = async function (action, options) { + if (!action || typeof action.then !== 'function') { + throw new TypeError('Parameter `action` must be a Promise'); + } + try { + await action; + return createNoopSpinner(); + } catch { + return createNoopSpinner(); + } + }; +} + +require.cache[oraPath].exports = noopOraFactory; diff --git a/packages/contentstack-clone/test/lib/util/clone-handler.stack.test.ts b/packages/contentstack-clone/test/lib/util/clone-handler.stack.test.ts index a639c353..bc340f60 100644 --- a/packages/contentstack-clone/test/lib/util/clone-handler.stack.test.ts +++ b/packages/contentstack-clone/test/lib/util/clone-handler.stack.test.ts @@ -38,6 +38,7 @@ describe('CloneHandler - Stack', () => { stack: sandbox.stub(), }; handler.setClient(mockClient); + sandbox.stub(handler, 'displayBackOptionMessage'); }); afterEach(() => { @@ -79,7 +80,6 @@ describe('CloneHandler - Stack', () => { }); }); const inquirerStub = sandbox.stub(inquirer, 'prompt').resolves({ stack: 'TestStack' }); - const displayBackOptionMessageStub = sandbox.stub(handler, 'displayBackOptionMessage'); const result = await handler.handleStackSelection({ org: { Organization: 'TestOrg' }, @@ -90,7 +90,7 @@ describe('CloneHandler - Stack', () => { expect((handler as any).config.sourceStackName).to.equal('TestStack'); expect((handler as any).config.source_stack).to.equal('test-stack-key'); expect((handler as any).master_locale).to.equal('en-us'); - expect(displayBackOptionMessageStub.calledOnce).to.be.true; + expect((handler.displayBackOptionMessage as sinon.SinonStub).calledOnce).to.be.true; expect(getStackStub.calledOnce).to.be.true; getStackStub.restore(); @@ -108,7 +108,6 @@ describe('CloneHandler - Stack', () => { }); }); const inquirerStub = sandbox.stub(inquirer, 'prompt').resolves({ stack: 'TestStack' }); - const displayBackOptionMessageStub = sandbox.stub(handler, 'displayBackOptionMessage'); const result = await handler.handleStackSelection({ org: { Organization: 'TestOrg' }, @@ -118,7 +117,7 @@ describe('CloneHandler - Stack', () => { expect(result).to.have.property('stack', 'TestStack'); expect((handler as any).config.target_stack).to.equal('test-stack-key'); expect((handler as any).config.destinationStackName).to.equal('TestStack'); - expect(displayBackOptionMessageStub.calledOnce).to.be.true; + expect((handler.displayBackOptionMessage as sinon.SinonStub).calledOnce).to.be.true; expect(getStackStub.calledOnce).to.be.true; getStackStub.restore();