import { resolveSportBucket, sportLabelFor } from "./schedule-events"; function assert(cond: unknown, msg: string) { if (!cond) throw new Error(msg); } function expectBucket( input: { category?: string; eventType?: string; name?: string; subtitle?: string }, bucket: string ) { const r = resolveSportBucket(input); assert(r.sportBucket === bucket, `expected ${bucket} got ${r.sportBucket} for ${JSON.stringify(input)}`); assert(r.sportLabel === sportLabelFor(bucket), `label mismatch for ${bucket}`); } // 1) category first token expectBucket({ category: "Voetbal" }, "football"); expectBucket({ category: "Voetbal, UEFA Europa League" }, "football"); expectBucket({ category: "Racing, MotoGP" }, "racing"); expectBucket({ category: "Tennis, ATP, ATP 500" }, "tennis"); expectBucket({ category: "Golf, USA PGA tour" }, "golf"); expectBucket({ category: "Waterpolo" }, "waterpolo"); // Noise categories → fall through / other expectBucket({ category: "Documentaire", name: "The Iconic: Voetbal" }, "other"); expectBucket({ category: "Talkshow" }, "other"); expectBucket({ category: "all" }, "other"); expectBucket({ category: "Upcoming" }, "other"); expectBucket({ category: "Live" }, "other"); // 2) eventType / leagues expectBucket({ category: "all", eventType: "Premier League", name: "Brentford - Chelsea" }, "football"); expectBucket({ category: "all", eventType: "Bundesliga" }, "football"); expectBucket({ category: "all", eventType: "PDC Darts" }, "darts"); expectBucket({ category: "all", eventType: "Formula 4 Italian Championship" }, "racing"); expectBucket({ category: "all", eventType: "Sail GP" }, "sailing"); expectBucket({ category: "all", eventType: "Ferrari Challenge UK" }, "racing"); expectBucket({ category: "all", eventType: "Goodwood Festival of Speed" }, "racing"); expectBucket({ category: "all", eventType: "ATP Tour" }, "tennis"); // Instant restart alone → other (unless name helps) expectBucket({ category: "Live", eventType: "Instant restart", name: "ESPN: ESPN Vandaag" }, "other"); expectBucket( { category: "Live", eventType: "Instant restart", name: "Ziggo Sport: Ziggo Sport Race Café" }, "racing" ); // 3) name keywords expectBucket({ name: "NBA Today" }, "basketball"); expectBucket({ name: "Ligue 1: Monaco - Lens" }, "football"); expectBucket({ name: "PDC Darts: World Series of Darts Finals 2026" }, "darts"); expectBucket({ name: "Some snooker final" }, "snooker"); console.log("schedule-events-sport tests ok");