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)); });