// Mock Tdarr lib const lib = { loadDefaultValues: (inputs, details) => { const d = details(); const result = { ...inputs }; d.Inputs.forEach(i => { if (result[i.name] === undefined) result[i.name] = i.defaultValue; }); return result; } }; const moduleAlias = require('module'); const originalRequire = moduleAlias.prototype.require; moduleAlias.prototype.require = function (path) { if (path === '../methods/lib') { return () => lib; } return originalRequire.apply(this, arguments); }; const { plugin } = require('../Local/Tdarr_Plugin_04_subtitle_conversion.js'); const mockFileMP4 = { container: 'mp4', fileMedium: 'video', ffProbeData: { streams: [ { index: 0, codec_type: 'video', codec_name: 'h264' }, { index: 1, codec_type: 'subtitle', codec_name: 'srt' } ] } }; const inputs = { enable_conversion: 'true', always_convert_webvtt: 'true' }; console.log('--- Testing MP4 Support ---'); const resultMP4 = plugin(mockFileMP4, {}, inputs, {}); console.log('Info Log:', resultMP4.infoLog); console.log('Preset:', resultMP4.preset); if (resultMP4.processFile && resultMP4.preset.includes('-c:1 mov_text')) { console.log('PASS: MP4 subtitle conversion enabled and correctly mapping mov_text.'); } else { console.error('FAIL: MP4 subtitle conversion failed or correctly ignored.'); } const mockFileWebVTT = { container: 'mkv', fileMedium: 'video', ffProbeData: { streams: [ { index: 0, codec_type: 'video', codec_name: 'h264' }, { index: 1, codec_type: 'subtitle', codec_name: 'none', codec_tag_string: 'WEBVTT' } ] } }; console.log('\n--- Testing WebVTT Detection (MKV) ---'); const resultWebVTT = plugin(mockFileWebVTT, {}, inputs, {}); console.log('Info Log:', resultWebVTT.infoLog); console.log('Preset:', resultWebVTT.preset); if (resultWebVTT.processFile && resultWebVTT.preset.includes('-c:1 srt')) { console.log('PASS: WebVTT detected via codec_tag_string and converted to SRT.'); } else { console.error('FAIL: WebVTT detection failed.'); }