nx/packages/remix/src/generators/application/lib/update-unit-test-config.ts
2023-12-14 19:55:08 +04:00

71 lines
2.0 KiB
TypeScript

import {
addDependenciesToPackageJson,
joinPathFragments,
stripIndents,
type Tree,
workspaceRoot,
} from '@nx/devkit';
import {
updateJestTestSetup,
updateViteTestIncludes,
updateViteTestSetup,
} from '../../../utils/testing-config-utils';
import {
getRemixVersion,
testingLibraryJestDomVersion,
testingLibraryReactVersion,
testingLibraryUserEventsVersion,
} from '../../../utils/versions';
export function updateUnitTestConfig(
tree: Tree,
pathToRoot: string,
unitTestRunner: 'vitest' | 'jest'
) {
const pathToTestSetup = joinPathFragments(pathToRoot, `test-setup.ts`);
tree.write(
pathToTestSetup,
stripIndents`
import { installGlobals } from '@remix-run/node';
import '@testing-library/jest-dom/matchers';
installGlobals();`
);
if (unitTestRunner === 'vitest') {
const pathToViteConfig = joinPathFragments(pathToRoot, 'vite.config.ts');
updateViteTestIncludes(
tree,
pathToViteConfig,
'./app/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'
);
updateViteTestIncludes(
tree,
pathToViteConfig,
'./tests/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'
);
updateViteTestSetup(tree, pathToViteConfig, 'test-setup.ts');
} else if (unitTestRunner === 'jest') {
const pathToJestConfig = joinPathFragments(pathToRoot, 'jest.config.ts');
tree.rename('jest.preset.js', 'jest.preset.cjs');
updateJestTestSetup(tree, pathToJestConfig, `<rootDir>/test-setup.ts`);
tree.write(
pathToJestConfig,
tree
.read(pathToJestConfig, 'utf-8')
.replace('jest.preset.js', 'jest.preset.cjs')
);
}
return addDependenciesToPackageJson(
tree,
{},
{
'@testing-library/jest-dom': testingLibraryJestDomVersion,
'@testing-library/react': testingLibraryReactVersion,
'@testing-library/user-event': testingLibraryUserEventsVersion,
'@remix-run/node': getRemixVersion(tree),
'@remix-run/testing': getRemixVersion(tree),
}
);
}