Files
any-hub/internal/hubmodule/registry_test.go
2025-11-14 23:54:50 +08:00

50 lines
1.3 KiB
Go

package hubmodule
import "testing"
func replaceRegistry(t *testing.T) func() {
t.Helper()
prev := globalRegistry
globalRegistry = newRegistry()
return func() { globalRegistry = prev }
}
func TestRegisterResolveAndList(t *testing.T) {
cleanup := replaceRegistry(t)
defer cleanup()
if err := Register(ModuleMetadata{Key: "beta", MigrationState: MigrationStateBeta}); err != nil {
t.Fatalf("register beta failed: %v", err)
}
if err := Register(ModuleMetadata{Key: "gamma", MigrationState: MigrationStateGA}); err != nil {
t.Fatalf("register gamma failed: %v", err)
}
if _, ok := Resolve("beta"); !ok {
t.Fatalf("expected beta to resolve")
}
if _, ok := Resolve("BETA"); !ok {
t.Fatalf("resolve should be case-insensitive")
}
list := List()
if len(list) != 2 {
t.Fatalf("list length mismatch: %d", len(list))
}
if list[0].Key != "beta" || list[1].Key != "gamma" {
t.Fatalf("unexpected order: %+v", list)
}
}
func TestRegisterDuplicateFails(t *testing.T) {
cleanup := replaceRegistry(t)
defer cleanup()
if err := Register(ModuleMetadata{Key: "legacy"}); err != nil {
t.Fatalf("first registration should succeed: %v", err)
}
if err := Register(ModuleMetadata{Key: "legacy"}); err == nil {
t.Fatalf("duplicate registration should fail")
}
}