Release 2.22.0: normalize playlist schedules and unify player sync
This commit is contained in:
1 parent
7748129307
commit
b71958cb38
39 files changed
+1174
-314
No files matched your search
@@ -55,6 +55,8 @@ test('buildScreenPlaylist assembles slides, templates, and derived values', asyn
|
||||
if (sql.includes('FROM c_playlist_slides ps')) {
|
||||
return [[{
|
||||
id: 101,
|
||||
playlist_slide_id: 301,
|
||||
group_id: 55,
|
||||
title: 'Intro',
|
||||
template_id: 33,
|
||||
content_json: '{"videoRegion":{"type":"video","duration_seconds":12.3456},"backupVideo":{"type":"video","duration_seconds":20.1111},"textRegion":{"type":"text","value":"Hello"},"brandTagline":{"type":"text","value":"Old slide value"},"qrRegion":{"type":"qr-code","value":"https://example.com"}}',
|
||||
@@ -69,7 +71,6 @@ test('buildScreenPlaylist assembles slides, templates, and derived values', asyn
|
||||
group_shuffle: 1,
|
||||
group_mode: 'repeat',
|
||||
group_repeat_count: 2,
|
||||
group_schedule_rules_json: '[{"start_time":"08:00","end_time":"12:00","days":[1,2,3]}]',
|
||||
template_name: 'Template 33',
|
||||
canvas_size_name: 'HD',
|
||||
canvas_size_width: 1920,
|
||||
@@ -78,6 +79,7 @@ test('buildScreenPlaylist assembles slides, templates, and derived values', asyn
|
||||
canvas_height: 1080
|
||||
}, {
|
||||
id: 102,
|
||||
playlist_slide_id: 302,
|
||||
title: 'Live Feed',
|
||||
template_id: 33,
|
||||
content_json: '{"rtmpRegion":{"type":"rtmp","value":"rtmp://example/live"}}',
|
||||
@@ -94,10 +96,12 @@ test('buildScreenPlaylist assembles slides, templates, and derived values', asyn
|
||||
canvas_height: 1080
|
||||
}]];
|
||||
}
|
||||
if (sql.includes('FROM c_playlist_slide_schedule_rules')) {
|
||||
if (sql.includes('FROM c_playlist_schedule_rules')) {
|
||||
assert.deepEqual(params, [22, 22]);
|
||||
return [[
|
||||
{ id: 500, playlist_slide_id: 101, position: 1, start_datetime: null, end_datetime: null, start_time: '08:00', end_time: '12:00', schedule_days_json: '[1,2,3]' },
|
||||
{ id: 501, playlist_slide_id: 101, position: 2, start_datetime: null, end_datetime: null, start_time: '13:00', end_time: '17:00', schedule_days_json: '[4,5]' }
|
||||
{ id: 500, playlist_slide_id: 301, playlist_group_id: null, position: 1, start_datetime: null, end_datetime: null, start_time: '08:00', end_time: '12:00', schedule_days_json: '[1,2,3]' },
|
||||
{ id: 501, playlist_slide_id: 301, playlist_group_id: null, position: 2, start_datetime: null, end_datetime: null, start_time: '13:00', end_time: '17:00', schedule_days_json: '[4,5]' },
|
||||
{ id: 502, playlist_slide_id: null, playlist_group_id: 55, position: 0, start_datetime: '2026-01-01T00:00:00.000Z', end_datetime: null, start_time: null, end_time: null, schedule_days_json: null }
|
||||
]];
|
||||
}
|
||||
if (sql.includes('FROM c_templates st')) {
|
||||
@@ -154,7 +158,9 @@ test('buildScreenPlaylist assembles slides, templates, and derived values', asyn
|
||||
assert.equal(payload.slides[1].groupMode, 'select');
|
||||
assert.equal(payload.slides[1].groupRepeatCount, 1);
|
||||
assert.equal(payload.slides[1].groupShuffle, false);
|
||||
assert.deepEqual(payload.slides[0].groupScheduleRules, [{ start_time: '08:00', end_time: '12:00', days: [1, 2, 3] }]);
|
||||
assert.equal(payload.slides[0].groupScheduleRules.length, 1);
|
||||
assert.equal(payload.slides[0].groupScheduleRules[0].start_datetime, '2026-01-01T00:00:00.000Z');
|
||||
assert.equal(payload.slides[0].groupScheduleRules[0].playlist_group_id, 55);
|
||||
assert.equal(payload.slides[0].template.regions[0].label, 'Text Region');
|
||||
assert.equal(payload.rssFeeds[0].items[0].normalized, true);
|
||||
assert.deepEqual(payload.apiSources[0].responseJson, { ok: true });
|
||||
|
||||
Reference in new issue
Block a user