落地埋点 ingest/数据看板、首页宫格 CMS 与测评上下架;含账号引导、问答流式与免责声明去重,以及 review P1 审计同事务修复。 Co-authored-by: Cursor <cursoragent@cursor.com>
46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package analytics
|
|
|
|
import "testing"
|
|
|
|
func TestScrubDwellNonNeg(t *testing.T) {
|
|
_, end, err := scrubProps("page_leave", map[string]interface{}{
|
|
"dwell_ms": float64(1200),
|
|
"phone": "13800000000",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if end != nil {
|
|
t.Fatal("page_leave should not produce session end")
|
|
}
|
|
_, end, err = scrubProps("session_end", map[string]interface{}{
|
|
"exit_page": "/ask",
|
|
"duration_ms": float64(5000),
|
|
"birthday": "1990-01-01",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if end == nil || end.ExitPage != "/ask" || end.DurationMs != 5000 {
|
|
t.Fatalf("bad end: %+v", end)
|
|
}
|
|
_, _, err = scrubProps("page_leave", map[string]interface{}{"dwell_ms": float64(-1)})
|
|
if err != ErrInvalidBatch {
|
|
t.Fatalf("want ErrInvalidBatch for negative dwell, got %v", err)
|
|
}
|
|
}
|
|
|
|
func TestParseDayRange(t *testing.T) {
|
|
from, to, err := ParseDayRange("2026-08-01", "2026-08-07")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if to.Sub(from).Hours() != 7*24 {
|
|
t.Fatalf("range=%v", to.Sub(from))
|
|
}
|
|
_, _, err = ParseDayRange("2026-08-07", "2026-08-01")
|
|
if err != ErrInvalidBatch {
|
|
t.Fatalf("want invalid, got %v", err)
|
|
}
|
|
}
|