Files
multica/server/internal/handler/skill_import_duplicate_test.go
2026-06-01 14:45:16 +08:00

49 lines
1.5 KiB
Go

package handler
import (
"context"
"encoding/json"
"net/http/httptest"
"testing"
)
func TestExistingSkillIdentityByNameReturnsIDAndName(t *testing.T) {
namePrefix := "duplicate-import-identity"
name := namePrefix + "-" + t.Name()
skillID := insertHandlerTestSkill(t, namePrefix, "# Duplicate import identity")
existing, ok, err := testHandler.existingSkillIdentityByName(context.Background(), parseUUID(testWorkspaceID), name)
if err != nil {
t.Fatalf("existingSkillIdentityByName: %v", err)
}
if !ok {
t.Fatal("expected existing skill identity to be found")
}
if existing.ID != skillID || existing.Name != name {
t.Fatalf("existing skill = %#v, want id %s name %s", existing, skillID, name)
}
}
func TestWriteSkillImportDuplicateConflictIncludesExistingSkill(t *testing.T) {
w := httptest.NewRecorder()
writeSkillImportDuplicateConflict(w, ExistingSkillIdentity{ID: "skill-123", Name: "review-helper"})
if w.Code != 409 {
t.Fatalf("status = %d, want 409: %s", w.Code, w.Body.String())
}
var body map[string]any
if err := json.Unmarshal(w.Body.Bytes(), &body); err != nil {
t.Fatalf("decode body: %v", err)
}
if body["error"] != "a skill with this name already exists" {
t.Fatalf("error = %v", body["error"])
}
existing, ok := body["existing_skill"].(map[string]any)
if !ok {
t.Fatalf("existing_skill missing or wrong type: %#v", body["existing_skill"])
}
if existing["id"] != "skill-123" || existing["name"] != "review-helper" {
t.Fatalf("existing_skill = %#v", existing)
}
}