UNPKG

8.85 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var Constants = require("./util/constants");
4var helpers = require("./util/helpers");
5var build = require("./build");
6var buildUtils = require("./build/util");
7var bundle = require("./bundle");
8var copy = require("./copy");
9var clean = require("./clean");
10var deepLinking = require("./deep-linking");
11var lint = require("./lint");
12var minify = require("./minify");
13var ngc = require("./ngc");
14var postprocess = require("./postprocess");
15var preprocess = require("./preprocess");
16var sass = require("./sass");
17var transpile = require("./transpile");
18describe('build', function () {
19 beforeEach(function () {
20 spyOn(clean, 'clean');
21 spyOn(helpers, helpers.readFileAsync.name).and.returnValue(Promise.resolve());
22 spyOn(transpile, transpile.getTsConfigAsync.name).and.callFake(function () {
23 return Promise.resolve({
24 'options': {
25 'sourceMap': true
26 }
27 });
28 });
29 spyOn(buildUtils, buildUtils.scanSrcTsFiles.name).and.returnValue(Promise.resolve());
30 spyOn(buildUtils, buildUtils.validateRequiredFilesExist.name).and.returnValue(Promise.resolve(['fileOneContent', 'fileTwoContent']));
31 spyOn(buildUtils, buildUtils.validateTsConfigSettings.name).and.returnValue(Promise.resolve());
32 spyOn(buildUtils, buildUtils.readVersionOfDependencies.name).and.returnValue(Promise.resolve());
33 spyOn(bundle, bundle.bundle.name).and.returnValue(Promise.resolve());
34 spyOn(copy, copy.copy.name).and.returnValue(Promise.resolve());
35 spyOn(deepLinking, deepLinking.deepLinking.name).and.returnValue(Promise.resolve());
36 spyOn(minify, minify.minifyCss.name).and.returnValue(Promise.resolve());
37 spyOn(minify, minify.minifyJs.name).and.returnValue(Promise.resolve());
38 spyOn(lint, lint.lint.name).and.returnValue(Promise.resolve());
39 spyOn(ngc, ngc.ngc.name).and.returnValue(Promise.resolve());
40 spyOn(postprocess, postprocess.postprocess.name).and.returnValue(Promise.resolve());
41 spyOn(preprocess, preprocess.preprocess.name).and.returnValue(Promise.resolve());
42 spyOn(sass, sass.sass.name).and.returnValue(Promise.resolve());
43 spyOn(transpile, transpile.transpile.name).and.returnValue(Promise.resolve());
44 });
45 it('should do a prod build', function () {
46 var context = {
47 isProd: true,
48 optimizeJs: true,
49 runMinifyJs: true,
50 runMinifyCss: true,
51 runAot: true
52 };
53 var getBooleanPropertyValueSpy = spyOn(helpers, helpers.getBooleanPropertyValue.name).and.returnValue(true);
54 return build.build(context).then(function () {
55 expect(buildUtils.scanSrcTsFiles).toHaveBeenCalled();
56 expect(copy.copy).toHaveBeenCalled();
57 expect(deepLinking.deepLinking).toHaveBeenCalled();
58 expect(ngc.ngc).toHaveBeenCalled();
59 expect(bundle.bundle).toHaveBeenCalled();
60 expect(minify.minifyJs).toHaveBeenCalled();
61 expect(sass.sass).toHaveBeenCalled();
62 expect(minify.minifyCss).toHaveBeenCalled();
63 expect(lint.lint).toHaveBeenCalled();
64 expect(getBooleanPropertyValueSpy.calls.all()[1].args[0]).toEqual(Constants.ENV_ENABLE_LINT);
65 expect(transpile.transpile).not.toHaveBeenCalled();
66 });
67 });
68 it('should do a dev build', function () {
69 var context = {
70 isProd: false,
71 optimizeJs: false,
72 runMinifyJs: false,
73 runMinifyCss: false,
74 runAot: false
75 };
76 var getBooleanPropertyValueSpy = spyOn(helpers, helpers.getBooleanPropertyValue.name).and.returnValue(true);
77 return build.build(context).then(function () {
78 expect(buildUtils.scanSrcTsFiles).toHaveBeenCalled();
79 expect(copy.copy).toHaveBeenCalled();
80 expect(deepLinking.deepLinking).toHaveBeenCalled();
81 expect(transpile.transpile).toHaveBeenCalled();
82 expect(bundle.bundle).toHaveBeenCalled();
83 expect(sass.sass).toHaveBeenCalled();
84 expect(lint.lint).toHaveBeenCalled();
85 expect(getBooleanPropertyValueSpy.calls.all()[1].args[0]).toEqual(Constants.ENV_ENABLE_LINT);
86 expect(postprocess.postprocess).toHaveBeenCalled();
87 expect(preprocess.preprocess).toHaveBeenCalled();
88 expect(ngc.ngc).not.toHaveBeenCalled();
89 expect(minify.minifyJs).not.toHaveBeenCalled();
90 expect(minify.minifyCss).not.toHaveBeenCalled();
91 });
92 });
93 it('should skip lint', function () {
94 var context = {
95 isProd: false,
96 optimizeJs: false,
97 runMinifyJs: false,
98 runMinifyCss: false,
99 runAot: false
100 };
101 var getBooleanPropertyValueSpy = spyOn(helpers, helpers.getBooleanPropertyValue.name).and.returnValue(false);
102 return build.build(context).then(function () {
103 expect(buildUtils.scanSrcTsFiles).toHaveBeenCalled();
104 expect(copy.copy).toHaveBeenCalled();
105 expect(transpile.transpile).toHaveBeenCalled();
106 expect(bundle.bundle).toHaveBeenCalled();
107 expect(sass.sass).toHaveBeenCalled();
108 expect(lint.lint).not.toHaveBeenCalled();
109 expect(getBooleanPropertyValueSpy.calls.all()[1].args[0]).toEqual(Constants.ENV_ENABLE_LINT);
110 expect(postprocess.postprocess).toHaveBeenCalled();
111 expect(preprocess.preprocess).toHaveBeenCalled();
112 expect(ngc.ngc).not.toHaveBeenCalled();
113 expect(minify.minifyJs).not.toHaveBeenCalled();
114 expect(minify.minifyCss).not.toHaveBeenCalled();
115 });
116 });
117});
118describe('test project requirements before building', function () {
119 it('should fail if APP_ENTRY_POINT file does not exist', function () {
120 process.env[Constants.ENV_APP_ENTRY_POINT] = 'src/app/main.ts';
121 process.env[Constants.ENV_TS_CONFIG] = 'tsConfig.js';
122 var error = new Error('App entry point was not found');
123 spyOn(helpers, 'readFileAsync').and.returnValue(Promise.reject(error));
124 return build.build({}).catch(function (e) {
125 expect(helpers.readFileAsync).toHaveBeenCalledTimes(1);
126 expect(e).toEqual(error);
127 });
128 });
129 it('should fail if IONIC_TS_CONFIG file does not exist', function () {
130 process.env[Constants.ENV_APP_ENTRY_POINT] = 'src/app/main.ts';
131 process.env[Constants.ENV_TS_CONFIG] = 'tsConfig.js';
132 var error = new Error('Config was not found');
133 spyOn(helpers, helpers.readFileAsync.name).and.returnValues(Promise.resolve());
134 spyOn(transpile, transpile.getTsConfigAsync.name).and.returnValues(Promise.reject(error));
135 return build.build({}).catch(function (e) {
136 expect(transpile.getTsConfigAsync).toHaveBeenCalledTimes(1);
137 expect(helpers.readFileAsync).toHaveBeenCalledTimes(1);
138 expect(e).toEqual(error);
139 });
140 });
141 it('should fail fataly if IONIC_TS_CONFIG file does not contain valid JSON', function () {
142 process.env[Constants.ENV_APP_ENTRY_POINT] = 'src/app/main.ts';
143 process.env[Constants.ENV_TS_CONFIG] = 'tsConfig.js';
144 spyOn(transpile, transpile.getTsConfigAsync.name).and.callFake(function () {
145 return Promise.resolve("{\n \"options\" {\n \"sourceMap\": false\n }\n }\n ");
146 });
147 spyOn(buildUtils, buildUtils.scanSrcTsFiles.name).and.returnValue(Promise.resolve());
148 spyOn(buildUtils, buildUtils.readVersionOfDependencies.name).and.returnValue(Promise.resolve());
149 return build.build({}).catch(function (e) {
150 expect(transpile.getTsConfigAsync).toHaveBeenCalledTimes(1);
151 expect(e.isFatal).toBeTruthy();
152 });
153 });
154 it('should fail fataly if IONIC_TS_CONFIG file does not contain compilerOptions.sourceMap === true', function () {
155 process.env[Constants.ENV_APP_ENTRY_POINT] = 'src/app/main.ts';
156 process.env[Constants.ENV_TS_CONFIG] = 'tsConfig.js';
157 spyOn(transpile, transpile.getTsConfigAsync.name).and.callFake(function () {
158 return Promise.resolve("{\n \"options\": {\n \"sourceMap\": false\n }\n }\n ");
159 });
160 spyOn(buildUtils, buildUtils.scanSrcTsFiles.name).and.returnValue(Promise.resolve());
161 spyOn(buildUtils, buildUtils.readVersionOfDependencies.name).and.returnValue(Promise.resolve());
162 return build.build({}).catch(function (e) {
163 expect(transpile.getTsConfigAsync).toHaveBeenCalledTimes(1);
164 expect(e.isFatal).toBeTruthy();
165 });
166 });
167});