nx/packages/vite/src/utils/generator-utils.spec.ts
2024-02-20 16:38:12 +02:00

118 lines
3.5 KiB
TypeScript

import {
readProjectConfiguration,
Tree,
updateProjectConfiguration,
} from '@nx/devkit';
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
import {
findExistingJsBuildTargetInProject,
getViteConfigPathForProject,
} from './generator-utils';
import {
mockReactAppGenerator,
mockViteReactAppGenerator,
mockAngularAppGenerator,
} from './test-utils';
describe('generator utils', () => {
let tree: Tree;
beforeEach(() => {
tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
});
describe('getViteConfigPathForProject', () => {
beforeEach(() => {
mockViteReactAppGenerator(tree);
});
it('should return correct path for vite.config file if no configFile is set', () => {
const viteConfigPath = getViteConfigPathForProject(
tree,
'my-test-react-vite-app'
);
expect(viteConfigPath).toEqual(
'apps/my-test-react-vite-app/vite.config.ts'
);
});
it('should return correct path for vite.config file if custom configFile is set', () => {
const projectConfig = readProjectConfiguration(
tree,
'my-test-react-vite-app'
);
updateProjectConfiguration(tree, 'my-test-react-vite-app', {
...projectConfig,
targets: {
...projectConfig.targets,
build: {
...projectConfig.targets.build,
options: {
...projectConfig.targets.build.options,
configFile: 'apps/my-test-react-vite-app/vite.config.custom.ts',
},
},
},
});
tree.write(`apps/my-test-react-vite-app/vite.config.custom.ts`, '');
const viteConfigPath = getViteConfigPathForProject(
tree,
'my-test-react-vite-app'
);
expect(viteConfigPath).toEqual(
'apps/my-test-react-vite-app/vite.config.custom.ts'
);
});
it('should return correct path for vite.config file given a target name', () => {
const projectConfig = readProjectConfiguration(
tree,
'my-test-react-vite-app'
);
updateProjectConfiguration(tree, 'my-test-react-vite-app', {
...projectConfig,
targets: {
...projectConfig.targets,
'other-build': {
...projectConfig.targets.build,
options: {
...projectConfig.targets.build.options,
configFile: 'apps/my-test-react-vite-app/vite.other.custom.ts',
},
},
},
});
tree.write(`apps/my-test-react-vite-app/vite.other.custom.ts`, '');
const viteConfigPath = getViteConfigPathForProject(
tree,
'my-test-react-vite-app',
'other-build'
);
expect(viteConfigPath).toEqual(
'apps/my-test-react-vite-app/vite.other.custom.ts'
);
});
});
describe('findExistingJsBuildTargetInProject', () => {
it('should return no targets', () => {
mockReactAppGenerator(tree);
const { targets } = readProjectConfiguration(tree, 'my-test-react-app');
const existingTargets = findExistingJsBuildTargetInProject(targets);
expect(existingTargets).toMatchObject({});
});
it('should return the correct - undefined - targets for Angular apps', () => {
mockAngularAppGenerator(tree);
const { targets } = readProjectConfiguration(tree, 'my-test-angular-app');
const existingTargets = findExistingJsBuildTargetInProject(targets);
expect(existingTargets).toMatchObject({
unsupported: 'build',
});
});
});
});