Files
OmniRoute/tests/unit/db-adapters/betterSqliteAdapter.test.ts
Praveen K Palaniswamy 65e81158ab fix(ollama): route models by advertised capability (#11088)
Landed with the design call resolved per the owner's pick — **option 1**: the synced store is now endpoint-agnostic (persistDiscoveredModels and managedModelImport no longer drop non-chat models at write time), and chat selectability moved to read time (auto-pool expansion in autoStrategy applies filterChatSelectableModels; the models-route projection already had its chatOnly filter). Your discovery test now passes end-to-end (3/3): /api/show capabilities persist per connection and image/embedding requests route through the advertising host.

Reconciliation notes: conflicted areas merged onto the current tip (adobe discovery import, requestedModel preflight signature, resolvedProvider fast-path coexists with the synced-route override — explicit resolution wins); carried base-red drains (#10055 memoization, #11071 test variants) dropped as already-landed; the managed-model-import exclusion test was propagated to the new contract (image/video models persist; the read filter still hides them from chat pickers — pinned by a new assertion). Full battery: 205/206 focused (the one red is a confirmed periodic-timer timing flake on the loaded devbox — 20/20 isolated), autoCombo vitest 30/30, combo suites 46/46, gates + typecheck clean.

Thank you @yourspraveen — the capability probe + routing design was right; it just needed the store contract opened up. Fixes #11087.
2026-08-23 11:45:01 -03:00

94 lines
3.2 KiB
TypeScript

import { test, describe } from "node:test";
import assert from "node:assert/strict";
const { tryOpenSync } = await import("../../../src/lib/db/adapters/driverFactory.ts");
describe("betterSqliteAdapter", () => {
test("abre DB in-memory e executa CRUD básico", () => {
const adapter = tryOpenSync(":memory:");
if (!adapter || adapter.driver !== "better-sqlite3") {
console.log("SKIP: better-sqlite3 não disponível");
return;
}
adapter.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, val TEXT)");
const result = adapter.prepare("INSERT INTO test (val) VALUES (?)").run("hello");
assert.equal(result.changes, 1);
const row = adapter
.prepare("SELECT val FROM test WHERE id = ?")
.get(result.lastInsertRowid) as {
val: string;
};
assert.equal(row.val, "hello");
const rows = adapter.prepare("SELECT * FROM test").all();
assert.equal(rows.length, 1);
adapter.close();
});
test("pragma retorna valor simples", () => {
const adapter = tryOpenSync(":memory:");
if (!adapter || adapter.driver !== "better-sqlite3") return;
const mode = adapter.pragma("journal_mode", { simple: true });
assert.ok(typeof mode === "string");
adapter.close();
});
test("transaction envolve operações em bloco atômico", () => {
const adapter = tryOpenSync(":memory:");
if (!adapter || adapter.driver !== "better-sqlite3") return;
adapter.exec("CREATE TABLE tx_test (id INTEGER PRIMARY KEY, val TEXT)");
const insertFn = adapter.transaction(() => {
adapter.prepare("INSERT INTO tx_test (val) VALUES (?)").run("a");
adapter.prepare("INSERT INTO tx_test (val) VALUES (?)").run("b");
});
insertFn();
const count = adapter.prepare("SELECT COUNT(*) as cnt FROM tx_test").get() as { cnt: number };
assert.equal(count.cnt, 2);
adapter.close();
});
test("driver é 'better-sqlite3'", () => {
const adapter = tryOpenSync(":memory:");
if (!adapter || adapter.driver !== "better-sqlite3") return;
assert.equal(adapter.driver, "better-sqlite3");
adapter.close();
});
test("transaction com rollback em erro desfaz operações", () => {
const adapter = tryOpenSync(":memory:");
if (!adapter || adapter.driver !== "better-sqlite3") return;
adapter.exec("CREATE TABLE rollback_test (id INTEGER PRIMARY KEY, val TEXT NOT NULL)");
const insertWithError = adapter.transaction(() => {
adapter.prepare("INSERT INTO rollback_test (val) VALUES (?)").run("before-error");
throw new Error("force rollback");
});
assert.throws(() => insertWithError(), /force rollback/);
const count = adapter.prepare("SELECT COUNT(*) as cnt FROM rollback_test").get() as {
cnt: number;
};
assert.equal(count.cnt, 0, "Rollback deve ter desfeito o insert");
adapter.close();
});
test("expõe o estado da transação sem vazar o driver bruto", () => {
const adapter = tryOpenSync(":memory:");
if (!adapter || adapter.driver !== "better-sqlite3") return;
assert.equal(adapter.inTransaction, false);
const inspect = adapter.transaction(() => adapter.inTransaction);
assert.equal(inspect(), true);
assert.equal(adapter.inTransaction, false);
adapter.close();
});
});