it('does not create an HTTPS server if `https` is `null`', async () => { gasketAPI.config = { hostname: 'local.gasket.godaddy.com', http: 8080, https: null }; await start(); const createServerOpts = createServersModule.lastCall.args[0]; assume(createServerOpts).to.haveOwnProperty('http'); assume(createServerOpts).to.not.haveOwnProperty('https'); });
describe('safeAssign', () => { it('assigns missing keys to target', () => { const target = {}; safeAssign(target, { one: 1 }); assume(target).eqls({ one: 1 }); }); it('does not override existing keys', () => { const target = { two: 2 }; safeAssign(target, { one: 1 }); assume(target).eqls({ two: 2, one: 1 }); }); });
it('adds stylelint scripts if stylelint present', async () => { pkgHas.callsFake((prop, name) => prop === 'devDependencies' && ['stylelint'].includes(name)); await codeStyle.create(context, utils); assume(pkgAdd).calledWithMatch('scripts', { 'stylelint': sinon.match.string, 'stylelint:fix': sinon.match.string }); assume(utils.runScriptStr).calledWith('stylelint -- --fix'); });
it('handles undefined data (or empty stdout)', async function () { stdout = packageManager === 'yarn' ? '{}' : ''; runner = sinon.stub().resolves({ stdout }); PackageManager = manager(runner); const pkg = new PackageManager({ packageManager }); const res = await pkg.info(); assume(res.data).is.undefined(); });
describe('metadata', () => { it('retains acquired plugin data', () => { const mockData = { name: '@gasket/plugin-mock' }; const results = plugin.hooks.metadata(gasket, mockData); assume(results).property('name', '@gasket/plugin-mock'); }); it('adds lifecycles', () => { const mockData = { name: '@gasket/plugin-mock' }; const results = plugin.hooks.metadata(gasket, mockData); assume(results).property('lifecycles'); }); });
it('adds the preset version from rawPresets', async () => { mockContext.presetInfos[0].rawName = '@gasket/preset-bogus@4.5.6'; await setupPkg.wrapped(mockContext); assume(mockContext.pkg.fields).property('dependencies'); assume(mockContext.pkg.fields.dependencies).property('@gasket/preset-bogus', '4.5.6'); });
it('does not add posttest script if no eslint or stylelint', async () => { pkgHas.callsFake((_, name) => [].includes(name)); await codeStyle.create(context, utils); assume(pkgAdd).not.calledWithMatch('scripts', { posttest: sinon.match.string }); });
it('calls info with the --json flag', async function () { stdout = '{}'; runner = sinon.stub().resolves({ stdout }); PackageManager = manager(runner); const pkg = new PackageManager({ packageManager }); await pkg.info(); assume(runner.called).is.true(); assume(runner.firstCall.args[1]).contains('--json'); });
it('returns data object', async function () { stdout = packageManager === 'yarn' ? '{ "data": { "something": "^3.4.5" } }' : '{ "something": "^3.4.5" }'; runner = sinon.stub().resolves({ stdout }); PackageManager = manager(runner); const pkg = new PackageManager({ packageManager }); const res = await pkg.info(); assume(res.data).is.a('object'); assume(res.data).eqls({ something: '^3.4.5' }); });
it('returns data array', async function () { stdout = packageManager === 'yarn' ? '{ "data": ["maintainer <my@email.com>"] }' : '["maintainer <my@email.com>"]'; runner = sinon.stub().resolves({ stdout }); PackageManager = manager(runner); const pkg = new PackageManager({ packageManager }); const res = await pkg.info(); assume(res.data).is.a('array'); assume(res.data).eqls(['maintainer <my@email.com>']); });