40 lines
1.2 KiB
JavaScript
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));
|
|
}); |