@@ -447,3 +447,87 @@ func TestGetParameters(t *testing.T) {
447447 })
448448 }
449449}
450+
451+ func TestGetCustomizedValues (t * testing.T ) {
452+ // Create parameters with both variable and default values
453+ // param1: value equals default (not customized)
454+ param1 := & Parameter {
455+ Type : "string" ,
456+ Variable : CreateVariableString ("default1" ),
457+ Default : CreateVariableString ("default1" ),
458+ }
459+ // param2: value differs from default (customized)
460+ param2 := & Parameter {
461+ Type : "string" ,
462+ Variable : CreateVariableString ("custom2" ),
463+ Default : CreateVariableString ("default2" ),
464+ }
465+ // param3: value differs from default (customized)
466+ param3 := & Parameter {
467+ Type : "int" ,
468+ Variable : CreateVariableInt (10 ),
469+ Default : CreateVariableInt (5 ),
470+ }
471+ // param4: value equals default (not customized)
472+ param4 := & Parameter {
473+ Type : "bool" ,
474+ Variable : CreateVariableBool (true ),
475+ Default : CreateVariableBool (true ),
476+ }
477+ // param5: has variable but no default (should be included)
478+ param5 := & Parameter {
479+ Type : "string" ,
480+ Variable : CreateVariableString ("value5" ),
481+ }
482+
483+ params := & Parameters {
484+ "param1" : param1 ,
485+ "param2" : param2 ,
486+ "param3" : param3 ,
487+ "param4" : param4 ,
488+ "param5" : param5 ,
489+ "other.param2" : param2 ,
490+ }
491+
492+ tests := []struct {
493+ name string
494+ keys []string
495+ want map [string ]* Variable
496+ }{
497+ {
498+ name : "No keys - returns only customized values" ,
499+ keys : []string {},
500+ want : map [string ]* Variable {
501+ "param2" : & param2 .Variable ,
502+ "param3" : & param3 .Variable ,
503+ "param5" : & param5 .Variable ,
504+ "other.param2" : & param2 .Variable ,
505+ },
506+ },
507+ {
508+ name : "Filter by prefix - returns only customized matching prefix" ,
509+ keys : []string {"param" },
510+ want : map [string ]* Variable {
511+ "param2" : & param2 .Variable ,
512+ "param3" : & param3 .Variable ,
513+ "param5" : & param5 .Variable ,
514+ },
515+ },
516+ {
517+ name : "Filter by other prefix" ,
518+ keys : []string {"other" },
519+ want : map [string ]* Variable {
520+ "other.param2" : & param2 .Variable ,
521+ },
522+ },
523+ }
524+
525+ for _ , tt := range tests {
526+ t .Run (tt .name , func (t * testing.T ) {
527+ got := params .GetCustomizedValues (tt .keys ... )
528+ if ! reflect .DeepEqual (got , tt .want ) {
529+ t .Errorf ("GetCustomizedValues() = %v, want %v" , got , tt .want )
530+ }
531+ })
532+ }
533+ }
0 commit comments