@@ -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} ) ;
0 commit comments