40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
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"])
|
|
}
|
|
}
|