Migrate NPC registry durable contract
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package identity
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
@@ -40,9 +41,16 @@ func TestNormalizeDisplayOnlyChangesWhitespace(t *testing.T) {
|
||||
|
||||
func TestDeriveIDAndIDSyntax(t *testing.T) {
|
||||
got := DeriveID(" Mira\u2003Thorn ")
|
||||
const want = "npc:sha256:35ba5f679aee69e07ae3bd65c44278f29539d5dc9bb5225db1c0060555b23221"
|
||||
if Policy != "dnd.npc_registry.identity.v1" || IdentityPolicy != Policy {
|
||||
t.Fatalf("identity policy = %q/%q", Policy, IdentityPolicy)
|
||||
}
|
||||
if len(got) != len("npc:sha256:")+64 || !strings.HasPrefix(got, "npc:sha256:") || !IsValidID(got) {
|
||||
t.Fatalf("DeriveID() = %q, want exact NPC ID syntax", got)
|
||||
}
|
||||
if got != want {
|
||||
t.Fatalf("DeriveID() = %q, want SHA-256 of compact JSON [policy, comparison_name]", got)
|
||||
}
|
||||
if got != DeriveID("Mira Thorn") || got != IDFor("Mira Thorn") {
|
||||
t.Fatal("DeriveID() is not deterministic across equivalent names")
|
||||
}
|
||||
@@ -80,7 +88,11 @@ func TestValidateRegistryReportsIdentityCollisionCategories(t *testing.T) {
|
||||
{ID: validID, Name: "Mira Thorn"},
|
||||
{ID: validID, Name: "Mira Thorn"},
|
||||
}
|
||||
before := append([]dnd.NPC(nil), npcs...)
|
||||
issues := ValidateRegistry(npcs)
|
||||
if !reflect.DeepEqual(npcs, before) {
|
||||
t.Fatal("ValidateRegistry() mutated its input")
|
||||
}
|
||||
want := map[IssueCode]bool{
|
||||
IssueDuplicateCanonical: false,
|
||||
IssueDuplicateID: false,
|
||||
|
||||
Reference in New Issue
Block a user