import assert from 'node:assert'; import LibDashStore from '../src/index.js'; import { BetterSqlite3Provider } from '../src/providers/sqlite3/index.js'; async function main() { console.log('Testing healthcheck store method on in-memory SQLite...'); const provider = new BetterSqlite3Provider({ path: ':memory:' }); await provider.initialize(); const store = await new LibDashStore(provider); assert(store.healthcheck, 'store.healthcheck should exist'); assert.strictEqual(typeof store.healthcheck.check, 'function', 'store.healthcheck.check should be a function'); // First call: table is empty, should ensure row (0), select for update, increment to 1 and update const res1 = await store.healthcheck.check(); console.log('Healthcheck call 1 result:', res1); assert.strictEqual(res1.ok, true, 'res1.ok should be true'); assert.strictEqual(res1.sequence, 1, 'res1.sequence should be 1'); // Second call: row exists with 1, should increment to 2 and update const res2 = await store.healthcheck.check(); console.log('Healthcheck call 2 result:', res2); assert.strictEqual(res2.ok, true, 'res2.ok should be true'); assert.strictEqual(res2.sequence, 2, 'res2.sequence should be 2'); // Third call: row exists with 2, should increment to 3 and update const res3 = await store.healthcheck.check(); console.log('Healthcheck call 3 result:', res3); assert.strictEqual(res3.ok, true, 'res3.ok should be true'); assert.strictEqual(res3.sequence, 3, 'res3.sequence should be 3'); // Verify DB state directly const rows = await provider.query('SELECT * FROM healthcheck'); console.log('Healthcheck DB rows:', rows.rows); assert.strictEqual(rows.rows.length, 1, 'healthcheck should have exactly 1 row'); assert.strictEqual(Number(rows.rows[0].sequence), 3, 'sequence in DB should be 3'); await provider.close(); console.log('✓ All healthcheck store tests passed successfully!'); } main().catch((err) => { console.error('Test failed:', err); process.exit(1); });