@@ -134,5 +134,80 @@ describe('commons utilities', () => {
134134 mergePartial ( base , partial ) ;
135135 expect ( base ) . toEqual ( baseClone ) ;
136136 } ) ;
137+
138+ describe ( 'MergeOptions' , ( ) => {
139+ describe ( 'mergeOptionalPartialValues' , ( ) => {
140+ interface OptionalTestType {
141+ value1 : string ;
142+ value2 ?: number ;
143+ value3 : string ;
144+ value4 ?: OptionalTestType ;
145+ }
146+ const defaultBase : OptionalTestType = {
147+ value1 : 'foo' ,
148+ value3 : 'bar' ,
149+ value4 : {
150+ value1 : 'foo' ,
151+ value3 : 'bar' ,
152+ } ,
153+ } ;
154+ const partial1 : RecursivePartial < OptionalTestType > = { value1 : 'baz' , value2 : 10 } ;
155+ const partial2 : RecursivePartial < OptionalTestType > = { value1 : 'baz' , value4 : { value2 : 10 } } ;
156+
157+ describe ( 'mergeOptionalPartialValues is true' , ( ) => {
158+ test ( 'should merge optional parameters' , ( ) => {
159+ const merged = mergePartial ( defaultBase , partial1 , { mergeOptionalPartialValues : true } ) ;
160+ expect ( merged ) . toEqual ( {
161+ value1 : 'baz' ,
162+ value2 : 10 ,
163+ value3 : 'bar' ,
164+ value4 : {
165+ value1 : 'foo' ,
166+ value3 : 'bar' ,
167+ } ,
168+ } ) ;
169+ } ) ;
170+
171+ test ( 'should merge nested optional parameters' , ( ) => {
172+ const merged = mergePartial ( defaultBase , partial2 , { mergeOptionalPartialValues : true } ) ;
173+ expect ( merged ) . toEqual ( {
174+ value1 : 'baz' ,
175+ value3 : 'bar' ,
176+ value4 : {
177+ value1 : 'foo' ,
178+ value2 : 10 ,
179+ value3 : 'bar' ,
180+ } ,
181+ } ) ;
182+ } ) ;
183+ } ) ;
184+
185+ describe ( 'mergeOptionalPartialValues is false' , ( ) => {
186+ test ( 'should NOT merge optional parameters' , ( ) => {
187+ const merged = mergePartial ( defaultBase , partial1 , { mergeOptionalPartialValues : false } ) ;
188+ expect ( merged ) . toEqual ( {
189+ value1 : 'baz' ,
190+ value3 : 'bar' ,
191+ value4 : {
192+ value1 : 'foo' ,
193+ value3 : 'bar' ,
194+ } ,
195+ } ) ;
196+ } ) ;
197+
198+ test ( 'should NOT merge nested optional parameters' , ( ) => {
199+ const merged = mergePartial ( defaultBase , partial2 , { mergeOptionalPartialValues : false } ) ;
200+ expect ( merged ) . toEqual ( {
201+ value1 : 'baz' ,
202+ value3 : 'bar' ,
203+ value4 : {
204+ value1 : 'foo' ,
205+ value3 : 'bar' ,
206+ } ,
207+ } ) ;
208+ } ) ;
209+ } ) ;
210+ } ) ;
211+ } ) ;
137212 } ) ;
138213} ) ;
0 commit comments