UNPKG

chimpy

Version:

Develop acceptance tests & end-to-end tests with realtime feedback.

51 lines (49 loc) 2.49 kB
jest.dontMock('../lib/options-loader'); jest.dontMock('path'); describe('Options Loader', () => { const optionsLoader = require('../lib/options-loader'); describe('getOptions', () => { const fs = require('fs'); beforeEach(() => { spyOn(process, 'cwd').and.returnValue('/myFolder'); optionsLoader._exit = jest.fn(); optionsLoader._requireFile = jest.fn(); }); it('should use the first argument as the config file if it is a js file containing "chimp"', () => { const argv = ['not', 'applicable', 'my-chimp-file.js']; optionsLoader._getProcessArgv = jest.fn().mockReturnValue(argv); fs.existsSync = jest.fn().mockReturnValue(true); optionsLoader.getOptions(); expect(optionsLoader._requireFile.mock.calls[0][0]).toBe('/myFolder/my-chimp-file.js'); }); it('should remove the config file from the arguments', () => { fs.existsSync = jest.fn().mockReturnValue(true); const argv = ['not', 'applicable', 'my-chimp-file.js', '2nd-arg']; optionsLoader._getProcessArgv = jest.fn().mockReturnValue(argv); optionsLoader.getOptions(); expect(argv).toEqual(['not', 'applicable', '2nd-arg']); }); it('it should log an error if the provided config file does not exist and exist with a code 1', () => { const argv = ['not', 'applicable', 'my-chimp-file.js']; optionsLoader._getProcessArgv = jest.fn().mockReturnValue(argv); fs.existsSync = jest.fn().mockReturnValue(false); optionsLoader.getOptions(); expect(optionsLoader._exit.mock.calls[0][0]).toBe(1); }); it('should load the chimp.js file if it exists in the current directory', () => { const argv = ['not', 'applicable', 'not-a-config-file.js']; optionsLoader._getProcessArgv = jest.fn().mockReturnValue(argv); fs.existsSync = jest.fn().mockReturnValue(true); optionsLoader.getOptions(); expect(optionsLoader._requireFile.mock.calls[0][0]).toBe('/myFolder/chimp.js'); }); it('should load default values from default.js', () => { const argv = ['not', 'applicable', 'not-a-config-file.js']; optionsLoader._getProcessArgv = jest.fn().mockReturnValue(argv); optionsLoader._getDefaultConfigFilePath = jest.fn().mockReturnValue('defaultFileLocation'); fs.existsSync = jest.fn().mockReturnValue(true); optionsLoader.getOptions(); expect(optionsLoader._requireFile.mock.calls[1][0]).toBe('defaultFileLocation'); }); }); });