113 lines
5.5 KiB
TypeScript
113 lines
5.5 KiB
TypeScript
import {checkFilesExist, cleanup, ngNew, readFile, runCLI, runSchematic, updateFile} from '../utils';
|
|
|
|
describe('Nrwl Convert to Nx Workspace', () => {
|
|
beforeEach(cleanup);
|
|
|
|
it('should generate a workspace', () => {
|
|
ngNew('--skip-install --npmScope=nrwl');
|
|
|
|
// update package.json
|
|
const packageJson = JSON.parse(readFile('package.json'));
|
|
packageJson.description = 'some description';
|
|
updateFile('package.json', JSON.stringify(packageJson, null, 2));
|
|
// confirm that @nrwl and @ngrx dependencies do not exist yet
|
|
expect(packageJson.devDependencies['@nrwl/schematics']).not.toBeDefined();
|
|
expect(packageJson.dependencies['@nrwl/nx']).not.toBeDefined();
|
|
expect(packageJson.dependencies['@ngrx/store']).not.toBeDefined();
|
|
expect(packageJson.dependencies['@ngrx/effects']).not.toBeDefined();
|
|
expect(packageJson.dependencies['@ngrx/router-store']).not.toBeDefined();
|
|
expect(packageJson.dependencies['@ngrx/store-devtools']).not.toBeDefined();
|
|
|
|
// update tsconfig.json
|
|
const tsconfigJson = JSON.parse(readFile('tsconfig.json'));
|
|
tsconfigJson.compilerOptions.paths = {'a': ['b']};
|
|
updateFile('tsconfig.json', JSON.stringify(tsconfigJson, null, 2));
|
|
|
|
// update angular-cli.json
|
|
const angularCLIJson = JSON.parse(readFile('.angular-cli.json'));
|
|
angularCLIJson.apps[0].scripts = ['../node_modules/x.js'];
|
|
updateFile('.angular-cli.json', JSON.stringify(angularCLIJson, null, 2));
|
|
|
|
// run the command
|
|
runSchematic('@nrwl/schematics:convert-to-workspace');
|
|
|
|
// check that files have been moved!
|
|
checkFilesExist('apps/proj/src/main.ts', 'apps/proj/src/app/app.module.ts');
|
|
|
|
// check that package.json got merged
|
|
const updatedPackageJson = JSON.parse(readFile('package.json'));
|
|
expect(updatedPackageJson.description).toEqual('some description');
|
|
expect(updatedPackageJson.devDependencies['@nrwl/schematics']).toBeDefined();
|
|
expect(updatedPackageJson.dependencies['@nrwl/nx']).toBeDefined();
|
|
expect(updatedPackageJson.dependencies['@ngrx/store']).toBeDefined();
|
|
expect(updatedPackageJson.dependencies['@ngrx/effects']).toBeDefined();
|
|
expect(updatedPackageJson.dependencies['@ngrx/router-store']).toBeDefined();
|
|
expect(updatedPackageJson.dependencies['@ngrx/store-devtools']).toBeDefined();
|
|
|
|
// check if angular-cli.json get merged
|
|
const updatedAngularCLIJson = JSON.parse(readFile('.angular-cli.json'));
|
|
expect(updatedAngularCLIJson.apps[0].root).toEqual('apps/proj/src');
|
|
expect(updatedAngularCLIJson.apps[0].outDir).toEqual('dist/apps/proj');
|
|
expect(updatedAngularCLIJson.apps[0].test).toEqual('../../../test.js');
|
|
expect(updatedAngularCLIJson.apps[0].tsconfig).toEqual('../../../tsconfig.app.json');
|
|
expect(updatedAngularCLIJson.apps[0].testTsconfig).toEqual('../../../tsconfig.spec.json');
|
|
expect(updatedAngularCLIJson.apps[0].scripts[0]).toEqual('../../../node_modules/x.js');
|
|
|
|
// check if tsconfig.json get merged
|
|
const updatedTsConfig = JSON.parse(readFile('tsconfig.json'));
|
|
expect(updatedTsConfig.compilerOptions.paths).toEqual({'a': ['b'], '@proj/*': ['libs/*']});
|
|
|
|
});
|
|
|
|
it('should generate a workspace and not change dependencies or devDependencies if they already exist', () => {
|
|
// create a new AngularCLI app
|
|
ngNew('--skip-install --npmScope=nrwl');
|
|
const nxVersion = '0.0.0';
|
|
const schematicsVersion = '0.0.0';
|
|
const ngrxVersion = '0.0.0';
|
|
// update package.json
|
|
const existingPackageJson = JSON.parse(readFile('package.json'));
|
|
existingPackageJson.devDependencies['@nrwl/schematics'] = schematicsVersion;
|
|
existingPackageJson.dependencies['@nrwl/nx'] = nxVersion;
|
|
existingPackageJson.dependencies['@ngrx/store'] = ngrxVersion;
|
|
existingPackageJson.dependencies['@ngrx/effects'] = ngrxVersion;
|
|
existingPackageJson.dependencies['@ngrx/router-store'] = ngrxVersion;
|
|
existingPackageJson.dependencies['@ngrx/store-devtools'] = ngrxVersion;
|
|
updateFile('package.json', JSON.stringify(existingPackageJson, null, 2));
|
|
// run the command
|
|
runSchematic('@nrwl/schematics:convert-to-workspace');
|
|
// check that dependencies and devDependencies remained the same
|
|
const packageJson = JSON.parse(readFile('package.json'));
|
|
expect(packageJson.devDependencies['@nrwl/schematics']).toEqual(schematicsVersion);
|
|
expect(packageJson.dependencies['@nrwl/nx']).toEqual(nxVersion);
|
|
expect(packageJson.dependencies['@ngrx/store']).toEqual(ngrxVersion);
|
|
expect(packageJson.dependencies['@ngrx/effects']).toEqual(ngrxVersion);
|
|
expect(packageJson.dependencies['@ngrx/router-store']).toEqual(ngrxVersion);
|
|
expect(packageJson.dependencies['@ngrx/store-devtools']).toEqual(ngrxVersion);
|
|
});
|
|
|
|
it('should build and test', () => {
|
|
ngNew();
|
|
runSchematic('@nrwl/schematics:convert-to-workspace --npmScope=nrwl');
|
|
runSchematic('@nrwl/schematics:lib --name=mylib --ngmodule');
|
|
|
|
updateFile('apps/proj/src/app/app.module.ts', `
|
|
import { NgModule } from '@angular/core';
|
|
import { BrowserModule } from '@angular/platform-browser';
|
|
import { MylibModule } from '@nrwl/mylib';
|
|
import { AppComponent } from './app.component';
|
|
|
|
@NgModule({
|
|
imports: [BrowserModule, MylibModule],
|
|
declarations: [AppComponent],
|
|
bootstrap: [AppComponent]
|
|
})
|
|
export class AppModule {}
|
|
`);
|
|
|
|
expect(runCLI('build --aot')).toContain('{main} main.bundle.js');
|
|
expect(runCLI('test --single-run')).toContain('Executed 3 of 3 SUCCESS');
|
|
expect(runCLI('e2e')).toContain('Executed 1 of 1 spec SUCCESS');
|
|
});
|
|
});
|