@bemedev/cli-test
Version:
A library for testing CLI libraries (INCEPTION !!)
98 lines (90 loc) • 2.82 kB
JavaScript
'use strict';
// export const LIBRARY = '@bemedev/cli-test';
const SETUP_FILE = '.cli-test.vitest.setup.generated.ts';
const INITIALIZATION_SUCCESS = 'Initialization is successful!';
const INITIALIZATION_FAILED = 'Initialization failed!';
const REMOVING_SUCCESS = 'Removing is successful!';
const REMOVING_FAILED = 'Removing failed!';
const SETUP = `
import { type ConfigDefs } from '@bemedev/cli-test';
import { buildPartialMock } from '@bemedev/cli-test/lib/helpers/partialMock';
import { checkHaveCli } from '@bemedev/cli-test/lib/helpers/path';
import { anify } from '@bemedev/cli-test/lib/helpers/utils';
import * as fs from 'fs';
import * as fs_promises from 'fs/promises';
import { beforeAll, vi } from 'vitest';
type FSPromises = typeof fs_promises;
type FS = typeof fs;
// #region BeforeAll
beforeAll(async ({ filepath }) => {
const isCli = checkHaveCli(filepath);
if (isCli) {
vi.mock('fs/promises', original =>
buildPartialMock<FSPromises>(
original,
'writeFile',
'readFile',
'mkdir',
'rm',
'readdir',
),
);
vi.mock('fs', original =>
buildPartialMock<FS>(original, 'existsSync'),
);
}
});
// #endregion
// #region buildMockFs
globalThis.buildMockFs = vi
.fn()
.mockImplementation(
(
{ exists, makeDir, removeDir, ls, readFile, writeFile }: ConfigDefs,
...envs
) => {
console.log('Implement buildMocks');
const _envs = new Set(envs);
_envs.forEach(env => {
switch (env) {
case 'writeFile':
vi.mocked(fs_promises.writeFile).mockImplementation(
anify(writeFile),
);
break;
case 'readFile':
vi.mocked(fs_promises.readFile).mockImplementation(
anify(readFile),
);
break;
case 'mkdir':
vi.mocked(fs_promises.mkdir).mockImplementation(
anify(makeDir),
);
break;
case 'rm':
vi.mocked(fs_promises.rm).mockImplementation(anify(removeDir));
break;
case 'readdir':
vi.mocked(fs_promises.readdir).mockImplementation(anify(ls));
break;
case 'existsSync':
vi.mocked(fs.existsSync).mockImplementation(anify(exists));
break;
default:
break;
}
});
},
);
// #endregion
`;
const CLI_TEST_EXTENSION = '.cli.test.ts';
exports.CLI_TEST_EXTENSION = CLI_TEST_EXTENSION;
exports.INITIALIZATION_FAILED = INITIALIZATION_FAILED;
exports.INITIALIZATION_SUCCESS = INITIALIZATION_SUCCESS;
exports.REMOVING_FAILED = REMOVING_FAILED;
exports.REMOVING_SUCCESS = REMOVING_SUCCESS;
exports.SETUP = SETUP;
exports.SETUP_FILE = SETUP_FILE;
//# sourceMappingURL=constants.cjs.map