package state import ( "testing" "github.com/google/go-cmp/cmp" ) func TestGenerateID(t *testing.T) { type testcase struct { subject string release ReleaseSpec data any want string } ids := map[string]int{} run := func(tc testcase) { t.Helper() t.Run(tc.subject, func(t *testing.T) { t.Helper() got, err := generateValuesID(&tc.release, tc.data) if err != nil { t.Fatalf("uenxpected error: %v", err) } if d := cmp.Diff(tc.want, got); d != "" { t.Fatalf("unexpected result: want (-), got (+):\n%s", d) } ids[got]++ }) } run(testcase{ subject: "baseline", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"}, want: "foo-values-58d856f487", }) run(testcase{ subject: "different bytes content", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"}, data: []byte(`{"k":"v"}`), want: "foo-values-6d96d874f6", }) run(testcase{ subject: "different map content", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"}, data: map[string]any{"k": "v"}, want: "foo-values-77cdb7dbb6", }) run(testcase{ subject: "different chart", release: ReleaseSpec{Name: "foo", Chart: "stable/envoy"}, want: "foo-values-66cd476bbb", }) run(testcase{ subject: "different name", release: ReleaseSpec{Name: "bar", Chart: "incubator/raw"}, want: "bar-values-5d59565d5b", }) run(testcase{ subject: "specific ns", release: ReleaseSpec{Name: "foo", Chart: "incubator/raw", Namespace: "myns"}, want: "myns-foo-values-644b7dfd78", }) for id, n := range ids { if n > 1 { t.Fatalf("too many occurrences of %s: %d", id, n) } } }