const test = require('node:test'); const assert = require('node:assert/strict'); require('../src/common'); const { buildPlaylistFormViewModel } = require('../src/web/routes/signage/playlists/form-view-model'); test('playlist rows show mute controls for RTMP slides', () => { const model = buildPlaylistFormViewModel( { id: 22, name: 'Playlist 22' }, { playlistSlides: [ { id: 1, playlist_id: 22, slide_id: 101, position: 1, title: 'Video slide', content_json: '{"videoRegion":{"type":"video","value":"/media/video.mp4"}}', duration_seconds: 10, use_video_duration: 0, disable_audio: 1 }, { id: 2, playlist_id: 22, slide_id: 102, position: 2, title: 'RTMP slide', content_json: '{"rtmpRegion":{"type":"rtmp","value":"rtmp://example/live"}}', duration_seconds: 10, use_video_duration: 0, disable_audio: 1 }, { id: 3, playlist_id: 22, slide_id: 103, position: 3, title: 'Image slide', content_json: '{"imageRegion":{"type":"image","value":"/media/image.png"}}', duration_seconds: 10, use_video_duration: 0, disable_audio: 1 } ], slides: [] }, '', null, { isEdit: true } ); assert.equal(model.playlistSlides[0].showMuteButton, true); assert.equal(model.playlistSlides[1].showMuteButton, true); assert.equal(model.playlistSlides[2].showMuteButton, false); }); test('playlist rows use the longest video region duration', () => { const model = buildPlaylistFormViewModel( { id: 23, name: 'Playlist 23' }, { playlistSlides: [ { id: 4, playlist_id: 23, slide_id: 104, position: 1, title: 'Multi-video slide', content_json: '{"firstVideo":{"type":"video","value":"/media/first.mp4","duration_seconds":12.5},"secondVideo":{"type":"video","value":"/media/second.mp4","duration_seconds":27.75},"textRegion":{"type":"text","value":"Hello"}}', duration_seconds: 10, use_video_duration: 1, disable_audio: 1 } ], slides: [] }, '', null, { isEdit: true } ); assert.equal(model.playlistSlides[0].showVideoDurationButton, true); assert.equal(model.playlistSlides[0].videoDurationSeconds, 27.75); assert.equal(model.playlistSlides[0].durationSeconds, 27.75); });