Skip to content

Commit 9053cb6

Browse files
committed
test: add merge tests
1 parent 2f5cd2b commit 9053cb6

7 files changed

Lines changed: 84 additions & 75 deletions

File tree

‎packages/webpack5/.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
#
22
dist
3+
coverage

‎packages/webpack5/__tests__/configuration/__snapshots__/react.spec.ts.snap‎

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,7 @@ exports[`react configuration > android > adds ReactRefreshWebpackPlugin when HMR
178178
'global.isAndroid': true,
179179
'global.isIOS': false,
180180
process: 'global.process',
181-
profile: '() => {}',
182-
__TEST__: 'false',
181+
__TEST__: false,
183182
'process.env.NODE_ENV': '\\"development\\"'
184183
}
185184
),
@@ -373,8 +372,7 @@ exports[`react configuration > android > base config 1`] = `
373372
'global.isAndroid': true,
374373
'global.isIOS': false,
375374
process: 'global.process',
376-
profile: '() => {}',
377-
__TEST__: 'false',
375+
__TEST__: false,
378376
'process.env.NODE_ENV': '\\"development\\"'
379377
}
380378
),
@@ -568,8 +566,7 @@ exports[`react configuration > ios > adds ReactRefreshWebpackPlugin when HMR ena
568566
'global.isAndroid': false,
569567
'global.isIOS': true,
570568
process: 'global.process',
571-
profile: '() => {}',
572-
__TEST__: 'false',
569+
__TEST__: false,
573570
'process.env.NODE_ENV': '\\"development\\"'
574571
}
575572
),
@@ -766,8 +763,7 @@ exports[`react configuration > ios > base config 1`] = `
766763
'global.isAndroid': false,
767764
'global.isIOS': true,
768765
process: 'global.process',
769-
profile: '() => {}',
770-
__TEST__: 'false',
766+
__TEST__: false,
771767
'process.env.NODE_ENV': '\\"development\\"'
772768
}
773769
),

‎packages/webpack5/__tests__/configuration/__snapshots__/vue.spec.ts.snap‎

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,7 @@ exports[`vue configuration for android 1`] = `
188188
__IOS__: false,
189189
'global.isAndroid': true,
190190
'global.isIOS': false,
191-
process: 'global.process',
192-
profile: '() => {}'
191+
process: 'global.process'
193192
}
194193
),
195194
/* config.plugin('WatchStateLoggerPlugin') */
@@ -392,8 +391,7 @@ exports[`vue configuration for ios 1`] = `
392391
__IOS__: true,
393392
'global.isAndroid': false,
394393
'global.isIOS': true,
395-
process: 'global.process',
396-
profile: '() => {}'
394+
process: 'global.process'
397395
}
398396
),
399397
/* config.plugin('WatchStateLoggerPlugin') */

‎packages/webpack5/__tests__/index.spec.ts‎

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ describe('@nativescript/webpack', () => {
1414

1515
it('applies chain configs', () => {
1616
webpack.useConfig(false);
17-
expect(webpack.chainWebpack).toBeInstanceOf(Function);
1817

1918
const chainFn = jest.fn();
2019
webpack.chainWebpack(chainFn);
@@ -30,4 +29,72 @@ describe('@nativescript/webpack', () => {
3029
expect(chainFn).toHaveBeenCalledWith(config, {});
3130
expect(config).toBeInstanceOf(Config);
3231
});
32+
33+
it('applies merge configs', () => {
34+
const dummyEnv = { env: true };
35+
webpack.init(dummyEnv);
36+
webpack.useConfig(false);
37+
38+
const mergeFn = jest.fn();
39+
webpack.mergeWebpack(mergeFn);
40+
41+
// mergeFn should not be called yet
42+
expect(mergeFn).not.toHaveBeenCalled();
43+
44+
const config = webpack.resolveChainableConfig();
45+
46+
// mergeFn should not be called yet
47+
expect(mergeFn).not.toHaveBeenCalled();
48+
49+
// mergeFn should only be called when
50+
// resolving the final config
51+
webpack.resolveConfig();
52+
53+
expect(mergeFn).toHaveBeenCalledTimes(1);
54+
expect(mergeFn).toHaveBeenCalledWith(config.toConfig(), dummyEnv);
55+
});
56+
57+
it('merges mutate config', () => {
58+
const dummyEnv = { env: true };
59+
webpack.init(dummyEnv);
60+
webpack.useConfig(false);
61+
62+
webpack.mergeWebpack((config) => {
63+
(config as any).mutated = true;
64+
});
65+
66+
expect(webpack.resolveConfig()).toMatchObject({
67+
mutated: true,
68+
});
69+
});
70+
71+
it('merges returned config', () => {
72+
const dummyEnv = { env: true };
73+
webpack.init(dummyEnv);
74+
webpack.useConfig(false);
75+
76+
webpack.mergeWebpack(() => {
77+
return {
78+
returned: true,
79+
};
80+
});
81+
82+
expect(webpack.resolveConfig()).toMatchObject({
83+
returned: true,
84+
});
85+
});
86+
87+
it('merges objects', () => {
88+
const dummyEnv = { env: true };
89+
webpack.init(dummyEnv);
90+
webpack.useConfig(false);
91+
92+
webpack.mergeWebpack({
93+
object: true,
94+
} as any);
95+
96+
expect(webpack.resolveConfig()).toMatchObject({
97+
object: true,
98+
});
99+
});
33100
});

‎packages/webpack5/src/configuration/react.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export default function (config: Config, env: IWebpackEnv = _env): Config {
2424
config.plugin('DefinePlugin').tap((args) => {
2525
args[0] = merge(args[0], {
2626
/** For various libraries in the React ecosystem. */
27-
__TEST__: 'false',
27+
__TEST__: false,
2828
/**
2929
* Primarily for React Fast Refresh plugin, but technically the allowHmrInProduction option could be used instead.
3030
* Worth including anyway, as there are plenty of Node libraries that use this flag.

‎packages/webpack5/src/helpers/temp.ts‎

Lines changed: 0 additions & 53 deletions
This file was deleted.

‎packages/webpack5/src/loaders/apply-css-loader/index.ts‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ export default function loader(content, map) {
1818

1919
const hmrCode = this.hot
2020
? dedent`
21-
if(module.hot) {
22-
module.hot.accept()
23-
module.hot.dispose(() => {
24-
const { removeTaggedAdditionalCSS } = require("@nativescript/core/ui/styling/style-scope");
25-
removeTaggedAdditionalCSS(${tag})
26-
})
27-
}
28-
`
21+
if(module.hot) {
22+
module.hot.accept()
23+
module.hot.dispose(() => {
24+
const { removeTaggedAdditionalCSS } = require("@nativescript/core/ui/styling/style-scope");
25+
removeTaggedAdditionalCSS(${tag})
26+
})
27+
}
28+
`
2929
: ``;
3030

3131
if (hasLoader('apply-css-loader')) {

0 commit comments

Comments
 (0)