Exclude empty and zero content references
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 1m12s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 32s

This commit is contained in:
lzstealth committed 2026-10-24 20:38:59 +01:00
1 parent 0044cbc1fc
commit f7d29ac326
3 files changed
+42 -2

No files matched your search

+39
View File
@@ -120,4 +120,43 @@ test('content references omit built-in font stacks but retain managed font famil
assert.deepEqual(references.map(reference => [reference.owner_key, reference.reference_value]), [
['managed', 'ubuntu regular']
]);
});
test('content references omit zero and empty item selections for every typed reference field', () => {
const fields = ['source_id', 'feed_id', 'timetable_group_id', 'weather_location_id', 'weather_icon_set_id'];
for (const field of fields) {
for (const value of [0, '0', ' 0 ', '', ' ', null, undefined]) {
assert.deepEqual(collectContentReferences('slide', 117, { empty: { [field]: value } }), [], field + ': ' + String(value));
}
}
for (const field of fields.slice(0, -1)) {
for (const value of ['00', '0.0', '-0']) {
assert.deepEqual(collectContentReferences('template', 42, { empty: { [field]: value } }), [], field + ': ' + value);
}
}
});
test('content reference replacement removes stored zero selections while preserving valid references', async () => {
const calls = [];
const connection = {
async query(sql, params) {
calls.push([sql, params]);
if (sql.startsWith('SELECT id, owner_key')) {
return [[
{ id: 101, owner_key: 'api', reference_type: 'api-request', reference_value: '0' },
{ id: 102, owner_key: 'feed', reference_type: 'rss-feed', reference_value: '8' }
]];
}
return [{}];
}
};
await replaceContentReferences(connection, 'slide', 117, {
api: { source_id: 0 },
feed: { feed_id: 8 }
});
const deletion = calls.find(([sql]) => sql.startsWith('DELETE FROM c_content_references'));
assert.deepEqual(deletion[1], ['slide', 117, [101]]);
assert.ok(!calls.some(([sql]) => sql.startsWith('INSERT')));
});