@@ -289,198 +289,3 @@ func jsonPatch(operations ...jsonpatch.Operation) []byte {
289289 )
290290 return b
291291}
292-
293- func TestMergeVariableDefinitions (t * testing.T ) {
294- t .Parallel ()
295-
296- type args struct {
297- vars map [string ]apiextensionsv1.JSON
298- globalVars map [string ]apiextensionsv1.JSON
299- }
300- tests := []struct {
301- name string
302- args args
303- want map [string ]apiextensionsv1.JSON
304- wantErr bool
305- errString string
306- }{
307- {
308- name : "no overlap, globalVars added" ,
309- args : args {
310- vars : map [string ]apiextensionsv1.JSON {
311- "a" : {Raw : []byte (`1` )},
312- },
313- globalVars : map [string ]apiextensionsv1.JSON {
314- "b" : {Raw : []byte (`2` )},
315- },
316- },
317- want : map [string ]apiextensionsv1.JSON {
318- "a" : {Raw : []byte (`1` )},
319- "b" : {Raw : []byte (`2` )},
320- },
321- },
322- {
323- name : "globalVars value is nil, skipped" ,
324- args : args {
325- vars : map [string ]apiextensionsv1.JSON {
326- "a" : {Raw : []byte (`1` )},
327- },
328- globalVars : map [string ]apiextensionsv1.JSON {
329- "b" : {Raw : nil },
330- },
331- },
332- want : map [string ]apiextensionsv1.JSON {
333- "a" : {Raw : []byte (`1` )},
334- },
335- },
336- {
337- name : "existing value is nil, globalVars value used" ,
338- args : args {
339- vars : map [string ]apiextensionsv1.JSON {
340- "a" : {Raw : nil },
341- },
342- globalVars : map [string ]apiextensionsv1.JSON {
343- "a" : {Raw : []byte (`2` )},
344- },
345- },
346- want : map [string ]apiextensionsv1.JSON {
347- "a" : {Raw : []byte (`2` )},
348- },
349- },
350- {
351- name : "both values are scalars, globalVars ignored" ,
352- args : args {
353- vars : map [string ]apiextensionsv1.JSON {
354- "a" : {Raw : []byte (`1` )},
355- },
356- globalVars : map [string ]apiextensionsv1.JSON {
357- "a" : {Raw : []byte (`2` )},
358- },
359- },
360- want : map [string ]apiextensionsv1.JSON {
361- "a" : {Raw : []byte (`1` )},
362- },
363- },
364- {
365- name : "both values are objects, merged" ,
366- args : args {
367- vars : map [string ]apiextensionsv1.JSON {
368- "a" : {Raw : []byte (`{"x":1,"y":2}` )},
369- },
370- globalVars : map [string ]apiextensionsv1.JSON {
371- "a" : {Raw : []byte (`{"y":3,"z":4}` )},
372- },
373- },
374- want : map [string ]apiextensionsv1.JSON {
375- "a" : {Raw : []byte (`{"x":1,"y":2,"z":4}` )},
376- },
377- },
378- {
379- name : "both values are objects with nested objects, merged" ,
380- args : args {
381- vars : map [string ]apiextensionsv1.JSON {
382- "a" : {Raw : []byte (`{"x":1,"y":{"a": 2,"b":{"c": 3}}}` )},
383- },
384- globalVars : map [string ]apiextensionsv1.JSON {
385- "a" : {Raw : []byte (`{"y":{"a": 2,"b":{"c": 5, "d": 6}},"z":4}` )},
386- },
387- },
388- want : map [string ]apiextensionsv1.JSON {
389- "a" : {Raw : []byte (`{"x":1,"y":{"a": 2,"b":{"c": 3, "d": 6}},"z":4}` )},
390- },
391- },
392- {
393- name : "both values are objects with nested objects with vars having nil object explicitly, merged" ,
394- args : args {
395- vars : map [string ]apiextensionsv1.JSON {
396- "a" : {Raw : []byte (`{"x":1,"y":{"a": 2,"b": null}}` )},
397- },
398- globalVars : map [string ]apiextensionsv1.JSON {
399- "a" : {Raw : []byte (`{"y":{"a": 2,"b":{"c": 5, "d": 6}},"z":4}` )},
400- },
401- },
402- want : map [string ]apiextensionsv1.JSON {
403- "a" : {Raw : []byte (`{"x":1,"y":{"a": 2,"b":{"c": 5, "d": 6}},"z":4}` )},
404- },
405- },
406- {
407- name : "globalVars is scalar, vars is object, keep object" ,
408- args : args {
409- vars : map [string ]apiextensionsv1.JSON {
410- "a" : {Raw : []byte (`{"x":1}` )},
411- },
412- globalVars : map [string ]apiextensionsv1.JSON {
413- "a" : {Raw : []byte (`2` )},
414- },
415- },
416- want : map [string ]apiextensionsv1.JSON {
417- "a" : {Raw : []byte (`{"x":1}` )},
418- },
419- },
420- {
421- name : "vars is scalar, globalVars is object, keep scalar" ,
422- args : args {
423- vars : map [string ]apiextensionsv1.JSON {
424- "a" : {Raw : []byte (`2` )},
425- },
426- globalVars : map [string ]apiextensionsv1.JSON {
427- "a" : {Raw : []byte (`{"x":1}` )},
428- },
429- },
430- want : map [string ]apiextensionsv1.JSON {
431- "a" : {Raw : []byte (`2` )},
432- },
433- },
434- {
435- name : "invalid JSON in vars" ,
436- args : args {
437- vars : map [string ]apiextensionsv1.JSON {
438- "a" : {Raw : []byte (`{invalid}` )},
439- },
440- globalVars : map [string ]apiextensionsv1.JSON {
441- "a" : {Raw : []byte (`{"x":1}` )},
442- },
443- },
444- wantErr : true ,
445- errString : "failed to unmarshal existing value for key \" a\" " ,
446- },
447- {
448- name : "invalid JSON in globalVars" ,
449- args : args {
450- vars : map [string ]apiextensionsv1.JSON {
451- "a" : {Raw : []byte (`{"x":1}` )},
452- },
453- globalVars : map [string ]apiextensionsv1.JSON {
454- "a" : {Raw : []byte (`{invalid}` )},
455- },
456- },
457- wantErr : true ,
458- errString : "failed to unmarshal global value for key \" a\" " ,
459- },
460- }
461-
462- for _ , tt := range tests {
463- t .Run (tt .name , func (t * testing.T ) {
464- t .Parallel ()
465- g := gomega .NewWithT (t )
466- got , err := mergeVariableOverridesWithGlobal (tt .args .vars , tt .args .globalVars )
467- if tt .wantErr {
468- g .Expect (err ).To (gomega .HaveOccurred ())
469- g .Expect (err .Error ()).To (gomega .ContainSubstring (tt .errString ))
470- return
471- }
472- g .Expect (err ).ToNot (gomega .HaveOccurred ())
473- // Compare JSON values
474- for k , wantVal := range tt .want {
475- gotVal , ok := got [k ]
476- g .Expect (ok ).To (gomega .BeTrue (), "missing key %q" , k )
477- var wantObj , gotObj interface {}
478- _ = json .Unmarshal (wantVal .Raw , & wantObj )
479- _ = json .Unmarshal (gotVal .Raw , & gotObj )
480- g .Expect (gotObj ).To (gomega .Equal (wantObj ), "key %q" , k )
481- }
482- // Check for unexpected keys
483- g .Expect (len (got )).To (gomega .Equal (len (tt .want )))
484- })
485- }
486- }
0 commit comments