Intro, Outro, Backing Track und Voice-overs pro Clip laufen über denselben Upload in Stücken wie die Clips. Die Schnitt-Einstellungen werden feldweise geprüft; ffprobe akzeptiert jetzt auch reine Tonspuren. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
47 lines
1.6 KiB
JavaScript
47 lines
1.6 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { test } from 'node:test';
|
|
import { defaultSettings, mergeSettings } from '../server/settings.js';
|
|
|
|
test('Vorgaben: beschleunigen und stummschalten an, Intro, Outro und Musik aus', () => {
|
|
const settings = defaultSettings();
|
|
assert.equal(settings.speedUp, true);
|
|
assert.equal(settings.muteClips, true);
|
|
assert.equal(settings.intro.enabled, false);
|
|
assert.equal(settings.music.volume, 60);
|
|
});
|
|
|
|
test('Teiländerungen lassen den Rest stehen', () => {
|
|
const merged = mergeSettings(defaultSettings(), { music: { volume: 35 } }, 5);
|
|
assert.equal(merged.music.volume, 35);
|
|
assert.equal(merged.music.enabled, false);
|
|
assert.equal(merged.intro.volume, 100);
|
|
});
|
|
|
|
test('Voice-over-Lautstärke pro Clip und ausgeschlossene Clips', () => {
|
|
const merged = mergeSettings(defaultSettings(), { voiceVolumes: { 2: 80 }, excluded: [3, 1, 3] }, 5);
|
|
assert.deepEqual(merged.voiceVolumes, { 2: 80 });
|
|
assert.deepEqual(merged.excluded, [1, 3]);
|
|
});
|
|
|
|
test('Ungültige Werte werden abgelehnt', () => {
|
|
const invalid = [
|
|
{ music: { volume: 101 } },
|
|
{ clipVolume: -1 },
|
|
{ clipVolume: 50.5 },
|
|
{ speedUp: 'ja' },
|
|
{ voiceVolumes: { 9: 50 } },
|
|
{ excluded: [7] },
|
|
[],
|
|
];
|
|
for (const patch of invalid) {
|
|
assert.throws(() => mergeSettings(defaultSettings(), patch, 5), { status: 400 });
|
|
}
|
|
});
|
|
|
|
test('Unbekannte Felder werden ignoriert', () => {
|
|
const merged = mergeSettings(defaultSettings(), { hacker: true, intro: { enabled: true, file: '/etc/passwd' } }, 1);
|
|
assert.equal(merged.hacker, undefined);
|
|
assert.equal(merged.intro.file, undefined);
|
|
assert.equal(merged.intro.enabled, true);
|
|
});
|