nx/e2e/nx-init/src/nx-init-nest.test.ts
2023-01-13 12:27:12 -06:00

66 lines
1.7 KiB
TypeScript

import {
e2eCwd,
exists,
getPackageManagerCommand,
getPublishedVersion,
runCLI,
} from '@nrwl/e2e/utils';
import { execSync } from 'child_process';
import { removeSync } from 'fs-extra';
describe('nx init (for NestCLI)', () => {
const pmc = getPackageManagerCommand({
packageManager: 'npm',
});
const projectName = 'nest-app';
const projectRoot = `${e2eCwd}/${projectName}`;
const cliOptions = { cwd: projectRoot };
afterEach(() => {
removeSync(projectRoot);
});
it('should convert NestCLI application to Nx standalone', () => {
execSync(
`${pmc.runUninstalledPackage} @nestjs/cli new ${projectName} --package-manager=npm`,
{
cwd: e2eCwd,
encoding: 'utf-8',
env: process.env,
stdio: ['pipe', 'pipe', 'pipe'],
}
);
const output = execSync(
`${
pmc.runUninstalledPackage
} nx@${getPublishedVersion()} init -y --cacheable=format`,
{
cwd: projectRoot,
encoding: 'utf-8',
env: process.env,
stdio: ['pipe', 'pipe', 'pipe'],
}
);
expect(output).toContain('Enabled computation caching');
// nest-cli.json is removed
expect(exists(`${projectRoot}/nest-cli.json`)).toBeFalsy();
// root nx.json exists
expect(exists(`${projectRoot}/nx.json`)).toBeTruthy();
// root project.json exists
expect(exists(`${projectRoot}/project.json`)).toBeTruthy();
runCLI('build', cliOptions);
expect(
exists(`${projectRoot}/dist/${projectName}/src/main.js`)
).toBeTruthy();
// run build again for cache
const buildOutput = runCLI('build', cliOptions);
expect(buildOutput).toContain('Nx read the output from the cache');
}, 10000);
});