82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
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-c7464bdc5",
 | 
						|
	})
 | 
						|
 | 
						|
	run(testcase{
 | 
						|
		subject: "different bytes content",
 | 
						|
		release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"},
 | 
						|
		data:    []byte(`{"k":"v"}`),
 | 
						|
		want:    "foo-values-79f8658596",
 | 
						|
	})
 | 
						|
 | 
						|
	run(testcase{
 | 
						|
		subject: "different map content",
 | 
						|
		release: ReleaseSpec{Name: "foo", Chart: "incubator/raw"},
 | 
						|
		data:    map[string]any{"k": "v"},
 | 
						|
		want:    "foo-values-7996cc88d6",
 | 
						|
	})
 | 
						|
 | 
						|
	run(testcase{
 | 
						|
		subject: "different chart",
 | 
						|
		release: ReleaseSpec{Name: "foo", Chart: "stable/envoy"},
 | 
						|
		want:    "foo-values-7cdb6bd8b6",
 | 
						|
	})
 | 
						|
 | 
						|
	run(testcase{
 | 
						|
		subject: "different name",
 | 
						|
		release: ReleaseSpec{Name: "bar", Chart: "incubator/raw"},
 | 
						|
		want:    "bar-values-59cd6576c4",
 | 
						|
	})
 | 
						|
 | 
						|
	run(testcase{
 | 
						|
		subject: "specific ns",
 | 
						|
		release: ReleaseSpec{Name: "foo", Chart: "incubator/raw", Namespace: "myns"},
 | 
						|
		want:    "myns-foo-values-5d5d46c98d",
 | 
						|
	})
 | 
						|
 | 
						|
	for id, n := range ids {
 | 
						|
		if n > 1 {
 | 
						|
			t.Fatalf("too many occurrences of %s: %d", id, n)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |