'use strict'; const test = require('node:test'); const assert = require('node:assert/strict'); const { parseChannelName, normalizeText } = require('../src/channel-name'); const sample = 'View BE| DAZN 03 [Standard de Liège - SK Beveren | Jupiler Pro League (nl) (2026-11-06 19:25:00)]'; test('parses the DAZN sample with UTC source timestamps', () => { const parsed = parseChannelName(sample, { timezone: 'UTC' }); assert.equal(parsed.title, 'Standard de Liège - SK Beveren'); assert.equal(parsed.league, 'Jupiler Pro League'); assert.equal(parsed.language, 'nl'); assert.equal(parsed.startAt.toISOString(), '2026-11-06T19:25:00.000Z'); }); test('can parse the same timestamp in another source timezone', () => { const parsed = parseChannelName(sample, { timezone: 'Europe/Brussels' }); assert.equal(parsed.startAt.toISOString(), '2026-11-06T18:25:00.000Z'); }); test('parses a French stream', () => { const parsed = parseChannelName( 'View BE| DAZN 03 [Standard de Liège - SK Beveren | Jupiler Pro League (fr) (2026-11-06 19:25:00)]', { timezone: 'UTC' } ); assert.equal(parsed.language, 'fr'); }); test('allows a missing language code', () => { const parsed = parseChannelName( 'DAZN 03 [Standard de Liège - SK Beveren | Jupiler Pro League (2026-11-06 19:25:00)]', { timezone: 'UTC' } ); assert.equal(parsed.language, null); }); test('returns null for unparseable names', () => { assert.equal(parseChannelName('DAZN 03', { timezone: 'UTC' }), null); assert.equal(parseChannelName('', { timezone: 'UTC' }), null); }); test('normalizes diacritics and whitespace', () => { assert.equal(normalizeText(' Standard de Liège - SK Beveren '), 'standard de liege - sk beveren'); });