package logic import ( "testing" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "tool-api/internal/consts" ) // ============================================================================ // 公开活动列表过滤单测(T02.4) // // 真实库集成测试(IT_DB 门控):只返已发布(can_query=true);草稿 / 已结束不出现; // 空结果非报错(list 非 nil)。探测数据用极大假 enterprise_id 隔离,结束即清理。 // ============================================================================ const probeEventEntId = int64(900000000000000002) func TestEventPublicListOnlyPublished(t *testing.T) { ctx := requireOrderIT(t) cleanup := func() { _, _ = g.DB().Exec(ctx, "DELETE FROM annual_events WHERE enterprise_id=?", probeEventEntId) } cleanup() defer cleanup() // 草稿 if _, err := g.Model(consts.TableAnnualEvents).Data(g.Map{ "enterprise_id": probeEventEntId, "title": "__probe_draft__", "status": consts.EventStatusDraft, "created_at": gtime.Now(), "updated_at": gtime.Now(), }).Insert(); err != nil { t.Fatalf("insert draft event: %v", err) } // 已发布 pubId, err := g.Model(consts.TableAnnualEvents).Data(g.Map{ "enterprise_id": probeEventEntId, "title": "__probe_pub__", "venue": "探测场地", "event_time": gtime.Now(), "status": consts.EventStatusPublished, "created_at": gtime.Now(), "updated_at": gtime.Now(), }).InsertAndGetId() if err != nil { t.Fatalf("insert published event: %v", err) } // 已结束 if _, err = g.Model(consts.TableAnnualEvents).Data(g.Map{ "enterprise_id": probeEventEntId, "title": "__probe_ended__", "status": consts.EventStatusEnded, "created_at": gtime.Now(), "updated_at": gtime.Now(), }).Insert(); err != nil { t.Fatalf("insert ended event: %v", err) } res, err := EventPublicList(ctx) if err != nil { t.Fatalf("EventPublicList: %v", err) } if res.List == nil { t.Fatalf("list 不应为 nil(无已发布时应为 [])") } foundPub := false for _, it := range res.List { if it.Title == "__probe_draft__" || it.Title == "__probe_ended__" { t.Fatalf("草稿 / 已结束活动不应出现:%+v", it) } if it.EventId == pubId { foundPub = true } } if !foundPub { t.Fatalf("已发布活动(id=%d)应出现在列表", pubId) } }