Session 7j: Soccer intelligence - 9 leagues, 11 signals, 6 traps, poller, prefetch, 131 new tests (1173 total)

This commit is contained in:
Kev
2026-06-10 14:50:13 -04:00
parent b9084408bf
commit ad5ea8d5a8
28 changed files with 3175 additions and 49 deletions
+118
View File
@@ -0,0 +1,118 @@
const wc = require('../../src/data/worldcup2026');
describe('worldcup2026 static reference data', () => {
describe('VENUES', () => {
test('has 16 venues (the official 2026 host venue count)', () => {
const count = Object.keys(wc.VENUES).length;
expect(count).toBe(16);
});
test('every venue has altitude_ft, climate, country, city', () => {
for (const [name, data] of Object.entries(wc.VENUES)) {
expect(typeof data.altitude_ft).toBe('number');
expect(typeof data.climate).toBe('string');
expect(typeof data.country).toBe('string');
expect(typeof data.city).toBe('string');
expect(['USA', 'Canada', 'Mexico']).toContain(data.country);
// Sanity check — no venue at impossible altitude.
expect(data.altitude_ft).toBeGreaterThanOrEqual(0);
expect(data.altitude_ft).toBeLessThan(10000);
// Test the data is shaped right, not the actual venue altitudes.
if (!name) throw new Error('empty venue name'); // touch `name`
}
});
test('Mexico City venue is the highest-altitude host site', () => {
const altitudes = Object.values(wc.VENUES).map((v) => v.altitude_ft);
const max = Math.max(...altitudes);
expect(wc.VENUES['Estadio Azteca'].altitude_ft).toBe(max);
expect(max).toBeGreaterThan(7000); // ~7,349 ft per public elevation data
});
});
describe('altitudeImpact', () => {
test('high above 4,000 ft', () => {
expect(wc.altitudeImpact(7349)).toBe('high');
expect(wc.altitudeImpact(5138)).toBe('high');
expect(wc.altitudeImpact(4001)).toBe('high');
});
test('moderate between 1,500 and 4,000 ft', () => {
expect(wc.altitudeImpact(1765)).toBe('moderate');
expect(wc.altitudeImpact(2000)).toBe('moderate');
});
test('none at sea level / typical US altitudes', () => {
expect(wc.altitudeImpact(7)).toBe('none');
expect(wc.altitudeImpact(820)).toBe('none');
expect(wc.altitudeImpact(1499)).toBe('none');
});
test('returns none for nullable inputs (graceful)', () => {
expect(wc.altitudeImpact(null)).toBe('none');
expect(wc.altitudeImpact(undefined)).toBe('none');
expect(wc.altitudeImpact(NaN)).toBe('none');
});
});
describe('isHomeContinent', () => {
test('returns true for the three 2026 hosts', () => {
expect(wc.isHomeContinent('USA')).toBe(true);
expect(wc.isHomeContinent('Canada')).toBe(true);
expect(wc.isHomeContinent('Mexico')).toBe(true);
});
test('returns false for European squads', () => {
expect(wc.isHomeContinent('France')).toBe(false);
expect(wc.isHomeContinent('Brazil')).toBe(false);
});
test('returns false for unknown teams', () => {
expect(wc.isHomeContinent('Atlantis')).toBe(false);
expect(wc.isHomeContinent(null)).toBe(false);
});
});
describe('penalty / corner / free-kick role lookups', () => {
test('isPenaltyTaker — known taker', () => {
expect(wc.isPenaltyTaker('Lionel Messi', 'Argentina')).toBe(true);
expect(wc.isPenaltyTaker('Harry Kane', 'England')).toBe(true);
});
test('isPenaltyTaker — case-insensitive', () => {
expect(wc.isPenaltyTaker('lionel messi', 'Argentina')).toBe(true);
});
test('isPenaltyTaker — wrong team returns false', () => {
expect(wc.isPenaltyTaker('Lionel Messi', 'France')).toBe(false);
});
test('isPenaltyTaker — null inputs return false', () => {
expect(wc.isPenaltyTaker(null, 'Argentina')).toBe(false);
expect(wc.isPenaltyTaker('X', null)).toBe(false);
});
test('isCornerTaker — multi-name array picks up secondaries', () => {
// England has 3+ corner takers — verify the second is found too.
expect(wc.isCornerTaker('Phil Foden', 'England')).toBe(true);
expect(wc.isCornerTaker('Trent Alexander-Arnold', 'England')).toBe(true);
});
test('isFreeKickTaker — sparse map (not every team has one)', () => {
expect(wc.isFreeKickTaker('Lionel Messi', 'Argentina')).toBe(true);
// Australia not in FK takers map at all
expect(wc.isFreeKickTaker('Anyone', 'Australia')).toBe(false);
});
});
describe('getTournamentHistory', () => {
test('returns career WC stats for documented players', () => {
const messi = wc.getTournamentHistory('Lionel Messi');
expect(messi.wc_goals_career).toBeGreaterThanOrEqual(3);
expect(messi.wc_appearances).toBeGreaterThan(0);
});
test('returns null for unknown player', () => {
expect(wc.getTournamentHistory('Nobody Joe')).toBeNull();
expect(wc.getTournamentHistory(null)).toBeNull();
});
});
describe('immutability', () => {
test('VENUES is frozen (cannot mutate top-level)', () => {
expect(Object.isFrozen(wc.VENUES)).toBe(true);
});
test('CONCACAF_TEAMS is frozen', () => {
expect(Object.isFrozen(wc.CONCACAF_TEAMS)).toBe(true);
});
});
});