package lottery import ( "context" "errors" "testing" "gorm.io/gorm" ) func TestRegistry_GetMissing(t *testing.T) { r := NewRegistry() if _, ok := r.Get("nope"); ok { t.Fatalf("empty registry should not return handler") } if _, err := r.MustGet("nope"); !errors.Is(err, ErrHandlerNotRegistered) { t.Fatalf("MustGet on missing type should return ErrHandlerNotRegistered, got %v", err) } } func TestRegistry_RegisterAndGet(t *testing.T) { r := NewRegistry() r.Register(NewNoopHandler()) h, err := r.MustGet(PrizeTypeNone) if err != nil { t.Fatalf("MustGet(%q): %v", PrizeTypeNone, err) } if h.Type() != PrizeTypeNone { t.Fatalf("Type mismatch: want %q got %q", PrizeTypeNone, h.Type()) } } func TestNoopHandler_AlwaysAutoClaimed(t *testing.T) { h := NewNoopHandler() if !h.IsAuto() { t.Fatal("noop must be auto") } res, err := h.Dispatch(context.Background(), (*gorm.DB)(nil), DispatchRequest{}) if err != nil { t.Fatalf("noop dispatch err: %v", err) } if res.State != DispatchStateAutoClaimed { t.Fatalf("noop should dispatch as auto_claimed, got %q", res.State) } }