summaryrefslogtreecommitdiff
path: root/internal/storage/roleconfig_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/storage/roleconfig_test.go')
-rw-r--r--internal/storage/roleconfig_test.go37
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 {