release: WRNexusJS 0.5.10
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import { expect, test } from "bun:test";
|
||||
import { sqlForDialect } from "../src/adapters/bunsql.ts";
|
||||
|
||||
test("PostgreSQL converts portable placeholders to numbered parameters", () => {
|
||||
expect(sqlForDialect("SELECT * FROM users WHERE id = ? AND status = ?", "postgres")).toBe(
|
||||
"SELECT * FROM users WHERE id = $1 AND status = $2",
|
||||
);
|
||||
});
|
||||
|
||||
test("MySQL and parameter-free PostgreSQL statements remain unchanged", () => {
|
||||
expect(sqlForDialect("SELECT * FROM users WHERE id = ?", "mysql")).toBe(
|
||||
"SELECT * FROM users WHERE id = ?",
|
||||
);
|
||||
expect(sqlForDialect("CREATE TABLE users (id TEXT)", "postgres")).toBe(
|
||||
"CREATE TABLE users (id TEXT)",
|
||||
);
|
||||
});
|
||||
@@ -8,12 +8,14 @@ import {
|
||||
createDb,
|
||||
createTableSql,
|
||||
parseMigration,
|
||||
applyMigrations,
|
||||
migrate,
|
||||
status,
|
||||
rollback,
|
||||
parseQueries,
|
||||
generateQueriesFile,
|
||||
} from "../src/index.ts";
|
||||
import type { Db } from "../src/index.ts";
|
||||
import { sqlite } from "../src/adapters/sqlite.ts";
|
||||
import { bunSql } from "../src/adapters/bunsql.ts";
|
||||
|
||||
@@ -95,6 +97,20 @@ test("migration runner: parse, migrate, status, rollback", async () => {
|
||||
db.close();
|
||||
});
|
||||
|
||||
test("an empty migration set does not touch the database", async () => {
|
||||
const unreachable = async () => {
|
||||
throw new Error("database should remain lazy");
|
||||
};
|
||||
const db = {
|
||||
all: unreachable,
|
||||
one: unreachable,
|
||||
exec: unreachable,
|
||||
tx: unreachable,
|
||||
} as unknown as Db;
|
||||
|
||||
expect(await applyMigrations(db, [])).toEqual([]);
|
||||
});
|
||||
|
||||
test("query generator infers params and result types", () => {
|
||||
const q = parseQueries(
|
||||
"-- name: GetByEmail :one\nSELECT * FROM users WHERE email = :email;\n" +
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
getDb,
|
||||
hasDb,
|
||||
registerDb,
|
||||
registerLazyDb,
|
||||
databaseNames,
|
||||
closeDatabases,
|
||||
} from "../src/index.ts";
|
||||
@@ -45,3 +46,35 @@ test("getDb throws a helpful error for an unknown named database", async () => {
|
||||
expect(() => getDb("nope")).toThrow(/No database named 'nope'/);
|
||||
await closeDatabases();
|
||||
});
|
||||
|
||||
test("named databases can be registered without opening a connection", async () => {
|
||||
await closeDatabases();
|
||||
let calls = 0;
|
||||
const analytics = createDb(sqlite(":memory:"));
|
||||
|
||||
registerLazyDb("analytics", () => {
|
||||
calls++;
|
||||
return analytics;
|
||||
});
|
||||
|
||||
expect(hasDb("analytics")).toBe(true);
|
||||
expect(databaseNames()).toEqual(["analytics"]);
|
||||
expect(calls).toBe(0);
|
||||
expect(getDb("analytics")).toBe(analytics);
|
||||
expect(getDb("analytics")).toBe(analytics);
|
||||
expect(calls).toBe(1);
|
||||
|
||||
await closeDatabases();
|
||||
});
|
||||
|
||||
test("closing the registry does not instantiate unused lazy databases", async () => {
|
||||
await closeDatabases();
|
||||
let calls = 0;
|
||||
registerLazyDb("unused", () => {
|
||||
calls++;
|
||||
return createDb(sqlite(":memory:"));
|
||||
});
|
||||
|
||||
await closeDatabases();
|
||||
expect(calls).toBe(0);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user