Skip to content

Commit

Permalink
Unit test DecodeStringToMap
Browse files Browse the repository at this point in the history
  • Loading branch information
nopcoder committed Feb 15, 2025
1 parent 6da9b65 commit 21e02d9
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions pkg/config/types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,59 @@ func TestStrings(t *testing.T) {
}
}

func TestDecodeStringToMap(t *testing.T) {
cases := []struct {
Name string
Source string
Expected map[string]string
ExpectedErr error
}{
{
Name: "empty string",
Source: "",
Expected: map[string]string{},
}, {
Name: "single pair",
Source: "key=value",
Expected: map[string]string{"key": "value"},
}, {
Name: "multiple pairs",
Source: "key1=value1,key2=value2",
Expected: map[string]string{"key1": "value1", "key2": "value2"},
}, {
Name: "pair with spaces",
Source: "key = value , key2 = value2",
Expected: map[string]string{"key": "value", "key2": "value2"},
}, {
Name: "invalid pair",
Source: "key1=value1,key2",
ExpectedErr: config.ErrInvalidKeyValuePair,
},
}
for _, c := range cases {
t.Run(c.Name, func(t *testing.T) {
result := make(map[string]string)
dc := mapstructure.DecoderConfig{
DecodeHook: config.DecodeStringToMap(),
Result: &result,
}
decoder, err := mapstructure.NewDecoder(&dc)
testutil.MustDo(t, "new decoder", err)
err = decoder.Decode(c.Source)
if c.ExpectedErr == nil {
testutil.MustDo(t, "decode", err)
if diffs := deep.Equal(result, c.Expected); diffs != nil {
t.Error(diffs)
}
} else {
if !errorsMatch(err, c.ExpectedErr) {
t.Errorf("Got error \"%v\", expected error \"%v\"", err, c.ExpectedErr)
}
}
})
}
}

type OnlyStringStruct struct {
S config.OnlyString
}
Expand Down

0 comments on commit 21e02d9

Please sign in to comment.