Files
pulse-signage/test/announcement-search-pagination.test.js
T
2026-08-05 19:38:16 +01:00

40 lines
1.2 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
const { fetchAnnouncementsPage } = require('../src/data/announcements');
test('announcement search pagination inserts the search clause before group by', async () => {
const queries = [];
const pool = {
async query(sql, params) {
queries.push({ sql, params });
if (sql.startsWith('SELECT COUNT(*) AS count FROM (')) {
return [[{ count: 1 }]];
}
return [[{
id: 1,
message: 'Hello',
short_label: 'Test',
announcement_type: 'top-banner',
color_key: 'info',
icon_key: 'info-circle',
duration_seconds: null,
expires_at: null,
created_at: null,
modified_at: null,
created_by: null,
modified_by: null,
screen_target_count: 0,
total_screen_count: 0,
screen_targets_label: ''
}]];
}
};
await fetchAnnouncementsPage(pool, 1, 25, 'hello', 'description', 'asc');
assert.match(queries[0].sql, /WHERE \(/i);
assert.match(queries[0].sql, /GROUP BY a\.id\) AS filtered_rows$/);
assert.match(queries[1].sql, /WHERE \(/i);
assert.ok(!/GROUP BY a\.id\s+WHERE/i.test(queries[1].sql));
});