stremio/apps/master-api/src/viewer/schedule-events-sport.test.ts
Jos Vooges | STH 796edf36db Add Events sport chips and shelves with sportBucket (TV 0.14.65).
Normalize FAAB events into stable sport buckets on master-api, group the TV Events tab by sport (with client fallback), and bump Android TV to 128/0.14.65.
2026-09-19 14:26:43 +02:00

54 lines
2.4 KiB
TypeScript

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");