package domain import "testing" func TestRoleAtLeast(t *testing.T) { tests := []struct { have Role min Role want bool }{ {RoleOwner, RoleOwner, true}, {RoleOwner, RoleEditor, true}, {RoleOwner, RoleViewer, true}, {RoleEditor, RoleOwner, false}, {RoleEditor, RoleEditor, true}, {RoleEditor, RoleViewer, true}, {RoleViewer, RoleOwner, false}, {RoleViewer, RoleEditor, false}, {RoleViewer, RoleViewer, true}, // Empty / unknown role should not satisfy any minimum. {Role(""), RoleViewer, false}, {Role("admin"), RoleViewer, false}, } for _, tt := range tests { if got := tt.have.AtLeast(tt.min); got != tt.want { t.Errorf("Role(%q).AtLeast(%q) = %v, want %v", tt.have, tt.min, got, tt.want) } } } func TestRoleValid(t *testing.T) { for _, r := range []Role{RoleOwner, RoleEditor, RoleViewer} { if !r.Valid() { t.Errorf("expected %q to be valid", r) } } for _, r := range []Role{Role(""), Role("admin"), Role("OWNER")} { if r.Valid() { t.Errorf("expected %q to be invalid", r) } } }