diff options
Diffstat (limited to 'internal/storage/roleconfig_test.go')
| -rw-r--r-- | internal/storage/roleconfig_test.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/internal/storage/roleconfig_test.go b/internal/storage/roleconfig_test.go index b18eaef..e5c8242 100644 --- a/internal/storage/roleconfig_test.go +++ b/internal/storage/roleconfig_test.go @@ -136,6 +136,43 @@ func TestActivateRoleConfigVersion_ExactlyOneActive(t *testing.T) { } } +func TestListRoleNames_ReturnsDistinctRolesAlphabetically(t *testing.T) { + db := testDB(t) + + if _, err := db.CreateRoleConfig("coder", `{"role":"coder"}`, "human"); err != nil { + t.Fatalf("CreateRoleConfig coder: %v", err) + } + // A second version for the same role must not produce a duplicate entry. + if _, err := db.CreateRoleConfig("coder", `{"role":"coder","system_prompt":"v2"}`, "human"); err != nil { + t.Fatalf("CreateRoleConfig coder v2: %v", err) + } + if _, err := db.CreateRoleConfig("builder", `{"role":"builder"}`, "human"); err != nil { + t.Fatalf("CreateRoleConfig builder: %v", err) + } + + names, err := db.ListRoleNames() + if err != nil { + t.Fatalf("ListRoleNames: %v", err) + } + if len(names) != 2 { + t.Fatalf("expected 2 distinct roles, got %d: %v", len(names), names) + } + if names[0] != "builder" || names[1] != "coder" { + t.Errorf("expected [builder coder] alphabetically, got %v", names) + } +} + +func TestListRoleNames_Empty_ReturnsEmptySlice(t *testing.T) { + db := testDB(t) + names, err := db.ListRoleNames() + if err != nil { + t.Fatalf("ListRoleNames: %v", err) + } + if names == nil || len(names) != 0 { + t.Errorf("expected empty (non-nil) slice, got %v", names) + } +} + func TestActivateRoleConfigVersion_UnknownVersion_Errors(t *testing.T) { db := testDB(t) if _, err := db.CreateRoleConfig("coder", `{"role":"coder"}`, "human"); err != nil { |
