105 lines
3.0 KiB
TypeScript
105 lines
3.0 KiB
TypeScript
import {
|
|
newApp,
|
|
newLib,
|
|
newProject,
|
|
readJson,
|
|
runCLI,
|
|
updateFile,
|
|
exists,
|
|
runNgNew,
|
|
cleanup,
|
|
copyMissingPackages,
|
|
getSize,
|
|
expectTestsPass,
|
|
runCLIAsync,
|
|
ensureProject,
|
|
uniq,
|
|
runsInWSL
|
|
} from '../utils';
|
|
import { toClassName } from '@nrwl/schematics/src/utils/name-utils';
|
|
|
|
describe('Nrwl Workspace', () => {
|
|
fit('should work', async () => {
|
|
ensureProject();
|
|
const myapp = uniq('myapp');
|
|
const mylib = uniq('mylib');
|
|
newApp(`${myapp} --directory=myDir`);
|
|
newLib(`${mylib} --directory=myDir`);
|
|
|
|
updateFile(
|
|
`apps/my-dir/${myapp}/src/app/app.module.ts`,
|
|
`
|
|
import { NgModule } from '@angular/core';
|
|
import { BrowserModule } from '@angular/platform-browser';
|
|
import { MyDir${toClassName(
|
|
mylib
|
|
)}Module } from '@proj/my-dir/${mylib}';
|
|
import { AppComponent } from './app.component';
|
|
|
|
@NgModule({
|
|
imports: [BrowserModule, MyDir${toClassName(mylib)}Module],
|
|
declarations: [AppComponent],
|
|
bootstrap: [AppComponent]
|
|
})
|
|
export class AppModule {}
|
|
`
|
|
);
|
|
runCLI(`build --prod --project=my-dir-${myapp} --output-hashing none`);
|
|
expect(exists(`./tmp/proj/dist/apps/my-dir/${myapp}/main.js`)).toEqual(
|
|
true
|
|
);
|
|
|
|
// This is a loose requirement because there are a lot of
|
|
// influences external from this project that affect this.
|
|
const bundleSize = getSize(`./tmp/proj/dist/apps/my-dir/${myapp}/main.js`);
|
|
console.log(`The current bundle size is ${bundleSize} KB`);
|
|
expect(bundleSize).toBeLessThanOrEqual(200000);
|
|
|
|
// running tests for the app
|
|
expectTestsPass(
|
|
await runCLIAsync(`test --project=my-dir-${myapp} --no-watch`)
|
|
);
|
|
|
|
// running tests for the lib
|
|
expectTestsPass(
|
|
await runCLIAsync(`test --project=my-dir-${mylib} --no-watch`)
|
|
);
|
|
|
|
if (!runsInWSL()) {
|
|
expect(
|
|
runCLI(`e2e --project=my-dir-${myapp}-e2e --headless --watch=false`)
|
|
).toContain('All specs passed!');
|
|
}
|
|
}, 1000000);
|
|
|
|
it('should support router config generation (lazy)', async () => {
|
|
ensureProject();
|
|
const myapp = uniq('myapp');
|
|
const mylib = uniq('mylib');
|
|
newApp(`${myapp} --directory=myDir --routing`);
|
|
newLib(
|
|
`${mylib} --directory=myDir --routing --lazy --parentModule=apps/my-dir/${myapp}/src/app/app.module.ts`
|
|
);
|
|
|
|
runCLI(`build --aot --project=my-dir-${myapp}`);
|
|
expectTestsPass(
|
|
await runCLIAsync(`test --project=my-dir-${myapp} --no-watch`)
|
|
);
|
|
}, 1000000);
|
|
|
|
it('should support router config generation (eager)', async () => {
|
|
ensureProject();
|
|
const myapp = uniq('myapp');
|
|
newApp(`${myapp} --directory=myDir --routing`);
|
|
const mylib = uniq('mylib');
|
|
newLib(
|
|
`${mylib} --directory=myDir --routing --parentModule=apps/my-dir/${myapp}/src/app/app.module.ts`
|
|
);
|
|
|
|
runCLI(`build --aot --project=my-dir-${myapp}`);
|
|
expectTestsPass(
|
|
await runCLIAsync(`test --project=my-dir-${myapp} --no-watch`)
|
|
);
|
|
}, 1000000);
|
|
});
|