Skip to content

Commit d930b7e

Browse files
kbukum1Copilot
andcommitted
Improve TestAllowedUpdateTypesJSON to validate actual JSON keys
Unmarshal into map[string]any to verify correct JSON tag names ("update-types", "dependency-name") rather than round-tripping through the same struct. Also verify omitempty behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent ebe3572 commit d930b7e

1 file changed

Lines changed: 33 additions & 9 deletions

File tree

internal/model/job_test.go

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,22 +69,46 @@ func TestAllowedUpdateTypesJSON(t *testing.T) {
6969
t.Fatal(err)
7070
}
7171

72-
var decoded Allowed
73-
if err := json.Unmarshal(data, &decoded); err != nil {
72+
// Verify the actual JSON keys are correct by unmarshaling into a raw map
73+
var raw map[string]any
74+
if err := json.Unmarshal(data, &raw); err != nil {
7475
t.Fatal(err)
7576
}
7677

77-
if decoded.DependencyName != original.DependencyName {
78-
t.Errorf("dependency-name: expected %q, got %q", original.DependencyName, decoded.DependencyName)
78+
if _, ok := raw["update-types"]; !ok {
79+
t.Errorf("expected JSON key \"update-types\" to be present, got keys: %v", raw)
7980
}
80-
if len(decoded.UpdateTypes) != len(original.UpdateTypes) {
81-
t.Fatalf("update-types length: expected %d, got %d", len(original.UpdateTypes), len(decoded.UpdateTypes))
81+
if _, ok := raw["dependency-name"]; !ok {
82+
t.Errorf("expected JSON key \"dependency-name\" to be present, got keys: %v", raw)
8283
}
83-
for i, et := range original.UpdateTypes {
84-
if decoded.UpdateTypes[i] != et {
85-
t.Errorf("update-types[%d]: expected %q, got %q", i, et, decoded.UpdateTypes[i])
84+
85+
types, ok := raw["update-types"].([]any)
86+
if !ok {
87+
t.Fatalf("expected update-types to be an array, got %T", raw["update-types"])
88+
}
89+
expectedTypes := []string{"version-update:semver-minor", "version-update:semver-patch"}
90+
if len(types) != len(expectedTypes) {
91+
t.Fatalf("expected %d update-types, got %d", len(expectedTypes), len(types))
92+
}
93+
for i, et := range expectedTypes {
94+
if types[i] != et {
95+
t.Errorf("update-types[%d]: expected %q, got %q", i, et, types[i])
8696
}
8797
}
98+
99+
// Verify omitempty: UpdateTypes should be absent when nil
100+
empty := Allowed{DependencyName: "rails"}
101+
data, err = json.Marshal(empty)
102+
if err != nil {
103+
t.Fatal(err)
104+
}
105+
var rawEmpty map[string]any
106+
if err := json.Unmarshal(data, &rawEmpty); err != nil {
107+
t.Fatal(err)
108+
}
109+
if _, ok := rawEmpty["update-types"]; ok {
110+
t.Errorf("expected \"update-types\" to be omitted when nil, but it was present")
111+
}
88112
}
89113

90114
func TestExistingPullRequestsNewFormat(t *testing.T) {

0 commit comments

Comments
 (0)