jest.mock('./package.json', () => ({ name: 'testpkg2', collective: {url: 'testurl'} }), {virtual: true}); describe('test all the things', () => { const env = global.process.env; const console = global.console; beforeEach(() => { global.console = {log: jest.fn(), warn: global.console.warn}; }); afterEach(() => { global.process.env = env; global.console.log.mockReset(); global.console = console; jest.resetModules(); }); describe('outputs the correct values', () => { it('when called without args', () =>{ expect(global.console.log).not.toHaveBeenCalled(); require('./index'); expect(global.console.log).toHaveBeenCalledTimes(3); expect(global.console.log).toHaveBeenNthCalledWith(1, `\u001b[96m\u001b[1mThank you for using testpkg2!\u001b[96m\u001b[1m` ); expect(global.console.log).toHaveBeenNthCalledWith(3, `> \u001b[94mtesturl/donate\u001b[0m\n` ); }); [0, false].forEach(falsy => { it(`when Disable is set to ${falsy}`, () => { global.process.env = {DISABLE_OPENCOLLECTIVE: falsy}; expect(global.console.log).not.toHaveBeenCalled(); require('./index'); expect(global.console.log).toHaveBeenCalledTimes(3); }); }); ['notice', 'http', 'timing', 'info', 'verbose', 'silly'].forEach(log => { it(`when config_loglevel is set to ${log}`, () => { global.process.env = {npm_config_loglevel: log} expect(global.console.log).not.toHaveBeenCalled(); require('./index'); expect(global.console.log).toHaveBeenCalledTimes(3); }); }); }); describe('does not show output', () => { [1, true].forEach(truthy => { it(`when Disable is set to ${truthy}`, () => { global.process.env = {DISABLE_OPENCOLLECTIVE: truthy}; expect(global.console.log).not.toHaveBeenCalled(); require('./index'); expect(global.console.log).not.toHaveBeenCalled(); }); }); ['warn', 'error', 'silent'].forEach(log => { it(`when npm_config_loglevel is set to ${log}`, () => { global.process.env = {npm_config_loglevel: log} require('./index'); expect(global.console.log).not.toHaveBeenCalled(); }); }); }); });