UNPKG

@bemedev/cli-test

Version:

A library for testing CLI libraries (INCEPTION !!)

91 lines (87 loc) 2.61 kB
'use strict'; var cliTestingLibrary = require('@gmrchk/cli-testing-library'); var vitest = require('vitest'); require('node:path'); var helpers_utils = require('./helpers/utils.cjs'); const envFn = () => { return vitest.vi.fn(); }; const useBefore = () => { const readFile = envFn(); const writeFile = envFn(); const cleanup = envFn(); const ls = envFn(); const removeDir = envFn(); const execute = envFn(); const spawn = envFn(); const removeFile = envFn(); const exists = envFn(); const makeDir = envFn(); const path = vitest.vi.fn(); vitest.beforeAll(async () => { const cli = await cliTestingLibrary.prepareEnvironment(); // #region Implements functions readFile.mockImplementation(cli.readFile); writeFile.mockImplementation(cli.writeFile); cleanup.mockImplementation(cli.cleanup); ls.mockImplementation(cli.ls); removeDir.mockImplementation(cli.removeDir); execute.mockImplementation(cli.execute); spawn.mockImplementation(cli.spawn); makeDir.mockImplementation(cli.makeDir); path.mockReturnValue(cli.path); removeFile.mockImplementation(cli.removeFile); exists.mockImplementation(cli.exists); // #endregion }); return { readFile, ls, removeDir, execute, writeFile, spawn, cleanup, makeDir, path, removeFile, exists, read: helpers_utils.undefiny(), }; }; const buildFn = (_fn) => { const fn = () => { const { readFile, ls, removeDir, execute, writeFile, spawn, cleanup, makeDir, path, removeFile, exists, } = useBefore(); const mockFs = (...envs) => { const __fn = globalThis?.buildMockFs?.getMockImplementation(); /* v8 ignore next 1 */ if (!__fn) return false; globalThis.buildMockFs({ exists, makeDir, removeDir, ls, readFile, writeFile }, ...envs); return true; }; vitest.afterAll(async () => { await cleanup(); // vi.clearAllMocks(); }); return _fn?.({ readFile, ls, removeDir, execute, writeFile, spawn, cleanup, makeDir, path: path(), removeFile, mockFs, exists, }); }; return fn; }; exports.buildFn = buildFn; exports.envFn = envFn; exports.useBefore = useBefore; //# sourceMappingURL=describe.utils.cjs.map