Release v2.18.0: template default content
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 2m2s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 31s

This commit is contained in:
lzstealth committed 2026-10-24 18:03:38 +01:00
1 parent 48e8f3eb4b
commit 24f1603b43
54 files changed
+1421 -151

No files matched your search

+5 -1
View File
@@ -8,7 +8,7 @@ function payload(requests, auth) {
return buildApiGroupPayload(Object.assign({ name: 'Tiltify', auth_method: 'none', requests_json: JSON.stringify(requests) }, auth));
}
function createPool(existing, slides, groupEnabled = 1) {
function createPool(existing, slides, groupEnabled = 1, templateDefaults = []) {
const calls = [];
const connection = {
async beginTransaction() { calls.push(['begin']); },
@@ -20,6 +20,7 @@ function createPool(existing, slides, groupEnabled = 1) {
if (sql.includes('SELECT id, enabled FROM i_api_source_groups WHERE id')) return [[{ id: 5, enabled: groupEnabled }]];
if (sql.includes('SELECT id FROM i_api_source_groups WHERE name')) return [[]];
if (sql.includes('SELECT id FROM i_api_sources')) return [existing.map(id => ({ id }))];
if (sql.includes('SELECT default_content_json FROM c_template_regions')) return [templateDefaults.map(value => ({ default_content_json: value }))];
if (sql.includes('SELECT content_json')) return [(slides || []).map(value => ({ content_json: value }))];
if (sql.startsWith('INSERT INTO i_api_sources')) return [{ insertId: 99 }];
if (sql.startsWith('INSERT INTO i_api_source_groups')) return [{ insertId: 10 }];
@@ -64,6 +65,9 @@ test('request ownership, slide usage, and delete permission are enforced before
const used = createPool([5, 6], [JSON.stringify({ region: { type: 'api', source_id: 6 } })]);
await assert.rejects(saveApiGroup(used, 5, payload([request]), 1, true), /still used/);
assert.ok(!used.calls.some(([sql]) => sql.startsWith('UPDATE')));
const usedByTemplate = createPool([5, 6], [], 1, [JSON.stringify({ source_id: 6 })]);
await assert.rejects(saveApiGroup(usedByTemplate, 5, payload([request]), 1, true), /still used/);
assert.ok(!usedByTemplate.calls.some(([sql]) => sql.startsWith('UPDATE')));
await assert.rejects(saveApiGroup(createPool([5, 6]), 5, payload([request]), 1, false), /permission/);
const unused = createPool([5, 6]);
const result = await saveApiGroup(unused, 5, payload([request]), 1, true);