Files
thebet365/apps/api/src/shared/match-time.spec.ts
wchino 21dd9957f0 refactor: update match time utilities and improve local match window logic
- Introduced new functions `isInLocalTodayMatchWindow` and `isAfterLocalTodayMatchWindow` to enhance match time checks.
- Replaced the deprecated `dayKeyInTimeZone` function with `isInLocalTodayMatchWindow` in the PlayerController.
- Updated related tests and utility exports to reflect the new naming conventions.
- Improved handling of local match windows in various components for better accuracy.
2026-06-13 18:20:26 +08:00

49 lines
1.6 KiB
TypeScript

import {
formatLocalMatchDateTime,
isAfterLocalTodayMatchWindow,
isInLocalTodayMatchWindow,
isoToPlatformPickerDateTime,
platformPickerDateTimeToIso,
} from '@thebet365/shared';
describe('match time helpers', () => {
it('converts Malaysia picker time to UTC ISO and back', () => {
const iso = platformPickerDateTimeToIso('2026-06-11T19:00:00');
expect(iso).toBe('2026-06-11T11:00:00.000Z');
expect(isoToPlatformPickerDateTime(iso)).toBe('2026-06-11T19:00:00');
});
it('formats the same kickoff in different local time zones with GMT offsets', () => {
const malaysia = formatLocalMatchDateTime('2026-06-11T11:00:00.000Z', 'en-US', {
variant: 'full',
timeZone: 'Asia/Kuala_Lumpur',
});
const newYork = formatLocalMatchDateTime('2026-06-11T11:00:00.000Z', 'en-US', {
variant: 'full',
timeZone: 'America/New_York',
});
expect(malaysia).toContain('07:00');
expect(malaysia).toContain('GMT+8');
expect(newYork).toContain('07:00');
expect(newYork).toContain('GMT-4');
expect(malaysia).not.toBe(newYork);
});
it('keeps early next-day matches in the player today bucket until local noon', () => {
const now = new Date('2026-06-11T15:00:00-04:00');
expect(isInLocalTodayMatchWindow('2026-06-12T02:00:00.000Z', now, 'America/New_York')).toBe(
true,
);
expect(isInLocalTodayMatchWindow('2026-06-12T15:59:59.000Z', now, 'America/New_York')).toBe(
true,
);
expect(isAfterLocalTodayMatchWindow('2026-06-12T16:00:00.000Z', now, 'America/New_York')).toBe(
true,
);
});
});