package reward import ( "context" "encoding/json" "net/http" "net/http/httptest" "testing" "time" "github.com/wangjia/pangolin/server/internal/codes" ) func TestGetInvite_ReturnsCodeAndSummary(t *testing.T) { db := openDB(t) seedU(t, db, 1, "u1") st := NewStore(db) g := codes.NewService(codes.NewStore(db), nil, 5, time.Hour) svc := NewService(db, st, g, Config{RegDays: 3, PaidDays: 7, TgDays: 3, RegMonthlyCap: 10}, time.Now) h := NewHandler(svc, st, true, "@pangolin_app") r := httptest.NewRequest(http.MethodGet, "/v1/invite", nil) r = r.WithContext(context.WithValue(r.Context(), codes.CtxKeyUserID, int64(1))) w := httptest.NewRecorder() h.GetInvite(w, r) // 直接调 handler,不经 router if w.Code != 200 { t.Fatalf("code=%d body=%s", w.Code, w.Body) } var got map[string]any json.Unmarshal(w.Body.Bytes(), &got) if got["invite_code"] == "" || got["invite_code"] == nil { t.Fatalf("no invite_code: %v", got) } tg, _ := got["telegram"].(map[string]any) if tg == nil || tg["enabled"] != true { t.Fatalf("telegram block wrong: %v", got["telegram"]) } }