Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions internal/model/job.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,9 +203,10 @@ type ExistingGroupPR struct {
}

type Allowed struct {
DependencyType string `json:"dependency-type,omitempty" yaml:"dependency-type,omitempty"`
DependencyName string `json:"dependency-name,omitempty" yaml:"dependency-name,omitempty"`
UpdateType string `json:"update-type,omitempty" yaml:"update-type,omitempty"`
DependencyType string `json:"dependency-type,omitempty" yaml:"dependency-type,omitempty"`
DependencyName string `json:"dependency-name,omitempty" yaml:"dependency-name,omitempty"`
UpdateType string `json:"update-type,omitempty" yaml:"update-type,omitempty"`
UpdateTypes []string `json:"update-types,omitempty" yaml:"update-types,omitempty"`
}

type Group struct {
Expand Down
71 changes: 71 additions & 0 deletions internal/model/job_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,73 @@ func TestInput(t *testing.T) {
compareMap(t, "job", input2["job"], input.Job)
}

func TestAllowedUpdateTypes(t *testing.T) {
var input Input
if err := yaml.Unmarshal([]byte(exampleJob), &input); err != nil {
t.Fatal(err)
}

allowed := input.Job.AllowedUpdates
if len(allowed) != 2 {
t.Fatalf("expected 2 allowed updates, got %d", len(allowed))
}

// First entry: dependency-type + update-type (existing pattern)
if allowed[0].DependencyType != "direct" {
t.Errorf("expected dependency-type 'direct', got %q", allowed[0].DependencyType)
}
if allowed[0].UpdateType != "all" {
t.Errorf("expected update-type 'all', got %q", allowed[0].UpdateType)
}
if len(allowed[0].UpdateTypes) != 0 {
t.Errorf("expected no update-types on first entry, got %v", allowed[0].UpdateTypes)
}

// Second entry: dependency-name + update-types (new feature)
if allowed[1].DependencyName != "rails" {
t.Errorf("expected dependency-name 'rails', got %q", allowed[1].DependencyName)
}
expectedTypes := []string{"version-update:semver-minor", "version-update:semver-patch"}
if len(allowed[1].UpdateTypes) != len(expectedTypes) {
t.Fatalf("expected %d update-types, got %d", len(expectedTypes), len(allowed[1].UpdateTypes))
}
for i, et := range expectedTypes {
if allowed[1].UpdateTypes[i] != et {
t.Errorf("update-types[%d]: expected %q, got %q", i, et, allowed[1].UpdateTypes[i])
}
}
}

func TestAllowedUpdateTypesJSON(t *testing.T) {
original := Allowed{
DependencyName: "rails",
UpdateTypes: []string{"version-update:semver-minor", "version-update:semver-patch"},
}

data, err := json.Marshal(original)
if err != nil {
t.Fatal(err)
}

// Verify marshaled JSON directly without using unmarshal
expected := `{"dependency-name":"rails","update-types":["version-update:semver-minor","version-update:semver-patch"]}`
if string(data) != expected {
t.Errorf("unexpected JSON output:\n got: %s\n want: %s", string(data), expected)
}

// Verify omitempty: UpdateTypes should be absent when nil
empty := Allowed{DependencyName: "rails"}
data, err = json.Marshal(empty)
if err != nil {
t.Fatal(err)
}

expectedEmpty := `{"dependency-name":"rails"}`
if string(data) != expectedEmpty {
t.Errorf("unexpected JSON output for empty UpdateTypes:\n got: %s\n want: %s", string(data), expectedEmpty)
}
}

func TestExistingPullRequestsNewFormat(t *testing.T) {
testYAML := `---
job:
Expand Down Expand Up @@ -663,6 +730,10 @@ job:
allowed-updates:
- dependency-type: direct
update-type: all
- dependency-name: "rails"
update-types:
- "version-update:semver-minor"
- "version-update:semver-patch"
dependency-groups:
- name: npm
rules:
Expand Down
Loading