Files
FuerDieCuts/test/settings.test.js
T
ferdi2goandClaude Opus 5.5 72e4b8ab7a Einstellungen und Zusatzdateien für den Schnitt ablegen
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>
2026-09-29 10:48:53 +00:00

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);
});