35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
'use strict';
|
|
const assert = require('node:assert');
|
|
const fs = require('node:fs');
|
|
const os = require('node:os');
|
|
const path = require('node:path');
|
|
const Database = require('better-sqlite3');
|
|
|
|
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'clip-mig-'));
|
|
const db = new Database(path.join(tmp, 'h.db'));
|
|
// Simulate an old DB without FTS5.
|
|
db.exec(`CREATE TABLE clips (id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, text TEXT)`);
|
|
const { migrate } = require('../lib/migrate.js');
|
|
|
|
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; }
|
|
}
|
|
|
|
check('migrate from v1 runs without throwing', () => {
|
|
migrate(db, 1, 2);
|
|
});
|
|
|
|
let skipped = false;
|
|
try { db.prepare('SELECT 1 FROM clips_fts LIMIT 0').all(); }
|
|
catch (_) { skipped = true; }
|
|
|
|
check(skipped ? 'clips_fts not present (FTS5 unavailable)' : 'clips_fts present', () => {
|
|
if (!skipped) {
|
|
const rows = db.prepare('SELECT 1 FROM clips_fts LIMIT 0').all();
|
|
assert.deepStrictEqual(rows, []);
|
|
}
|
|
});
|
|
|
|
db.close(); |