feat: 004/phase 1
This commit is contained in:
49
internal/hubmodule/registry_test.go
Normal file
49
internal/hubmodule/registry_test.go
Normal file
@@ -0,0 +1,49 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user