50 lines
1.3 KiB
Go
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")
|
|
}
|
|
}
|