Skip to content

Commit 44900f9

Browse files
hanslmgechev
authored andcommitted
test: add tests for build-webpack:webpack new builder
1 parent 06f5624 commit 44900f9

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/**
2+
* @license
3+
* Copyright Google Inc. All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
import { experimental, join, normalize, schema } from '@angular-devkit/core';
9+
import { NodeJsSyncHost } from '@angular-devkit/core/node';
10+
import * as fs from 'fs';
11+
import * as path from 'path';
12+
import { WorkspaceNodeModulesArchitectHost } from '../../../architect/node';
13+
import { Architect } from '../../../architect/src/architect';
14+
import { TestingArchitectHost } from '../../../architect/testing/testing-architect-host';
15+
16+
const devkitRoot = normalize((global as any)._DevKitRoot); // tslint:disable-line:no-any
17+
18+
19+
describe('Webpack Builder basic test', () => {
20+
let testArchitectHost: TestingArchitectHost;
21+
let architect: Architect;
22+
let vfHost: NodeJsSyncHost;
23+
24+
async function createArchitect(workspaceRoot: string) {
25+
vfHost = new NodeJsSyncHost();
26+
const configContent = fs.readFileSync(path.join(workspaceRoot, 'angular.json'), 'utf-8');
27+
const workspaceJson = JSON.parse(configContent);
28+
29+
const registry = new schema.CoreSchemaRegistry();
30+
registry.addPostTransform(schema.transforms.addUndefinedDefaults);
31+
32+
const workspace = new experimental.workspace.Workspace(normalize(workspaceRoot), vfHost);
33+
await workspace.loadWorkspaceFromJson(workspaceJson).toPromise();
34+
35+
testArchitectHost = new TestingArchitectHost(workspaceRoot, workspaceRoot,
36+
new WorkspaceNodeModulesArchitectHost(workspace, workspaceRoot));
37+
architect = new Architect(testArchitectHost, registry);
38+
}
39+
40+
describe('basic app', () => {
41+
const workspaceRoot = join(devkitRoot, 'tests/angular_devkit/build_webpack/basic-app/');
42+
const outputPath = join(workspaceRoot, 'dist');
43+
44+
beforeEach(async () => {
45+
await createArchitect(workspaceRoot);
46+
});
47+
48+
it('works', async () => {
49+
const run = await architect.scheduleTarget({ project: 'app', target: 'build' });
50+
const output = await run.result;
51+
52+
expect(output.success).toBe(true);
53+
expect(await vfHost.exists(join(outputPath, 'bundle.js')).toPromise()).toBe(true);
54+
await run.stop();
55+
});
56+
});
57+
58+
describe('Angular app', () => {
59+
const workspaceRoot = join(devkitRoot, 'tests/angular_devkit/build_webpack/angular-app/');
60+
const outputPath = join(workspaceRoot, 'dist/');
61+
62+
beforeEach(async () => {
63+
await createArchitect(workspaceRoot);
64+
});
65+
66+
it('works', async () => {
67+
const run = await architect.scheduleTarget({ project: 'app', target: 'build-webpack' });
68+
const output = await run.result;
69+
70+
expect(output.success).toBe(true);
71+
expect(await vfHost.exists(join(outputPath, 'main.js')).toPromise()).toBe(true);
72+
expect(await vfHost.exists(join(outputPath, 'polyfills.js')).toPromise()).toBe(true);
73+
await run.stop();
74+
});
75+
});
76+
});

0 commit comments

Comments
 (0)