47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
'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');
|
|
});
|