import sinon, { SinonStub } from 'sinon'; import * as cloneExports from '../clone'; import * as versionCheckExports from '../../helpers/version-check'; describe('rp clone', function () { const sandbox = sinon.createSandbox(); let cloneCollectionModuleStub: SinonStub; let cloneProductModuleStub: SinonStub; beforeEach(function () { cloneCollectionModuleStub = sandbox.stub(cloneExports, 'cloneCollectionModule'); cloneProductModuleStub = sandbox.stub(cloneExports, 'cloneProductModule'); sandbox.stub(versionCheckExports, 'checkPackageAndNodeVersion').resolves({ latest: '0.123', current: '0.123', }); }); afterEach(function () { // Restore the original functions after each test sandbox.verifyAndRestore(); }); it('should call cloneCollectionModule when collectionModule option is true', async function () { const params = { apiKey: 'your-api-key', moduleKey: 'your-module-key', options: { collectionModule: true }, }; await cloneExports.clone(params); sandbox.assert.calledOnce(cloneCollectionModuleStub); sandbox.assert.notCalled(cloneProductModuleStub); }); it('should call cloneProductModule when collectionModule option is false', async function () { const params = { apiKey: 'your-api-key', moduleKey: 'your-module-key', options: { collectionModule: false }, }; await cloneExports.clone(params); sandbox.assert.calledOnce(cloneProductModuleStub); sandbox.assert.notCalled(cloneCollectionModuleStub); }); });