118 lines
3.5 KiB
TypeScript
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',
|
|
});
|
|
});
|
|
});
|
|
});
|