Pure function that derives canonical (name, year) identity from a scoring_events row, stripping trailing 4-digit years from the name or falling back to eventDate. Used by the Phase 2 backfill to group per-window events into canonical tournaments.
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { extractTournamentIdentity } from "../match-tournament";
|
|
|
|
describe("extractTournamentIdentity", () => {
|
|
it("uses eventDate year when the name has no trailing year", () => {
|
|
const identity = extractTournamentIdentity({
|
|
name: "Masters Tournament",
|
|
eventDate: "2026-04-09",
|
|
eventType: "tournament",
|
|
});
|
|
|
|
expect(identity).toEqual({ name: "Masters Tournament", year: 2026 });
|
|
});
|
|
|
|
it("derives the year from eventDate for a simple tournament name", () => {
|
|
const identity = extractTournamentIdentity({
|
|
name: "Wimbledon",
|
|
eventDate: "2026-07-01",
|
|
eventType: "tournament",
|
|
});
|
|
|
|
expect(identity).toEqual({ name: "Wimbledon", year: 2026 });
|
|
});
|
|
|
|
it("strips a trailing year from the name and uses it as the canonical year", () => {
|
|
const identity = extractTournamentIdentity({
|
|
name: "Wimbledon 2026",
|
|
eventDate: "2026-07-01",
|
|
eventType: "tournament",
|
|
});
|
|
|
|
expect(identity).toEqual({ name: "Wimbledon", year: 2026 });
|
|
});
|
|
|
|
it("throws when neither the name nor eventDate supply a year", () => {
|
|
expect(() =>
|
|
extractTournamentIdentity({
|
|
name: "Wimbledon",
|
|
eventDate: null,
|
|
eventType: "tournament",
|
|
}),
|
|
).toThrow(/cannot determine year/);
|
|
});
|
|
});
|