65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
const { describe, it } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { parseVtt } = require('../lib/vtt-parser.js');
|
|
|
|
describe('parseVtt', () => {
|
|
it('parses single cue with speaker tag', () => {
|
|
const vtt = `WEBVTT
|
|
|
|
00:00:01.000 --> 00:00:04.000
|
|
<v Christian Kauer>Hallo zusammen.</v>
|
|
`;
|
|
const result = parseVtt(vtt);
|
|
assert.deepEqual(result, [
|
|
{ speaker: 'Christian Kauer', text: 'Hallo zusammen.', start: '00:00:01.000', end: '00:00:04.000' }
|
|
]);
|
|
});
|
|
|
|
it('merges consecutive cues from same speaker', () => {
|
|
const vtt = `WEBVTT
|
|
|
|
00:00:01.000 --> 00:00:04.000
|
|
<v Frank Herberg>Wir können das prüfen.</v>
|
|
|
|
00:00:04.500 --> 00:00:07.000
|
|
<v Frank Herberg>Lass uns Borgstedt fragen.</v>
|
|
`;
|
|
const result = parseVtt(vtt, { mergeConsecutive: true });
|
|
assert.equal(result.length, 1);
|
|
assert.equal(result[0].speaker, 'Frank Herberg');
|
|
assert.equal(result[0].text, 'Wir können das prüfen. Lass uns Borgstedt fragen.');
|
|
});
|
|
|
|
it('handles cues without speaker tag', () => {
|
|
const vtt = `WEBVTT
|
|
|
|
00:00:01.000 --> 00:00:02.000
|
|
[Hintergrundgeräusch]
|
|
`;
|
|
const result = parseVtt(vtt);
|
|
assert.equal(result[0].speaker, null);
|
|
assert.equal(result[0].text, '[Hintergrundgeräusch]');
|
|
});
|
|
|
|
it('returns empty array for empty vtt', () => {
|
|
assert.deepEqual(parseVtt('WEBVTT\n\n'), []);
|
|
});
|
|
});
|
|
|
|
describe('formatTranscript', () => {
|
|
const { formatTranscript } = require('../lib/vtt-parser.js');
|
|
|
|
it('formats cues as speaker: text lines', () => {
|
|
const cues = [
|
|
{ speaker: 'Christian Kauer', text: 'Hallo.' },
|
|
{ speaker: 'Frank Herberg', text: 'Hi.' }
|
|
];
|
|
assert.equal(formatTranscript(cues), 'Christian Kauer: Hallo.\nFrank Herberg: Hi.');
|
|
});
|
|
|
|
it('uses [unknown] for null speaker', () => {
|
|
const cues = [{ speaker: null, text: '[Lärm]' }];
|
|
assert.equal(formatTranscript(cues), '[unknown]: [Lärm]');
|
|
});
|
|
});
|