update
This commit is contained in:
44
test/db-prepared.test.js
Normal file
44
test/db-prepared.test.js
Normal file
@@ -0,0 +1,44 @@
|
||||
'use strict';
|
||||
const assert = require('node:assert');
|
||||
const fs = require('node:fs');
|
||||
const os = require('node:os');
|
||||
const path = require('node:path');
|
||||
|
||||
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'clip-stmt-'));
|
||||
process.env.USERPROFILE = tmp;
|
||||
process.env.HOME = tmp;
|
||||
|
||||
const Database = require('better-sqlite3');
|
||||
const dbPath = path.join(tmp, 'history.db');
|
||||
const db = new Database(dbPath);
|
||||
db.exec(`
|
||||
CREATE TABLE IF NOT EXISTS clips (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
type TEXT NOT NULL, text TEXT, image BLOB, preview TEXT,
|
||||
top_at REAL, created_at REAL NOT NULL
|
||||
);
|
||||
`);
|
||||
|
||||
let passed = 0;
|
||||
function check(name, fn) {
|
||||
try { fn(); console.log(' ok -', name); passed++; }
|
||||
catch (e) { console.error(' FAIL -', name, e.message); process.exitCode = 1; }
|
||||
}
|
||||
|
||||
const cached = {
|
||||
insert: db.prepare('INSERT INTO clips(type, text, preview, top_at, created_at) VALUES(?, ?, ?, ?, ?)'),
|
||||
};
|
||||
|
||||
check('prepare reuse returns same statement object (sanity)', () => {
|
||||
const a = db.prepare('SELECT 1');
|
||||
const b = db.prepare('SELECT 1');
|
||||
assert.ok(a !== b, 'sanity: each prepare() returns new object');
|
||||
});
|
||||
|
||||
check('cached insert works repeatedly', () => {
|
||||
for (let i = 0; i < 5; i++) {
|
||||
cached.insert.run('text', `m${i}`, `p${i}`, null, Date.now()/1000);
|
||||
}
|
||||
const n = db.prepare('SELECT COUNT(*) AS n FROM clips').get().n;
|
||||
assert.strictEqual(n, 5);
|
||||
});
|
||||
Reference in New Issue
Block a user