feat: add database reset functionality and implement rulebook tests
This commit is contained in:
@@ -262,6 +262,7 @@ export function createDatabase(config: DatabaseConfig): CharacterGardenDatabase
|
||||
DELETE FROM world_states;
|
||||
DELETE FROM turns;
|
||||
DELETE FROM entities;
|
||||
DELETE FROM rulebooks;
|
||||
`);
|
||||
},
|
||||
|
||||
|
||||
6
charactergarden/app/src/tests/sqliteProbe.ts
Normal file
6
charactergarden/app/src/tests/sqliteProbe.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import Database from "better-sqlite3";
|
||||
|
||||
const db = new Database(process.env.DB_PATH ?? "/var/lib/charactergarden/app.db");
|
||||
db.prepare("CREATE TABLE IF NOT EXISTS probe(value TEXT)").run();
|
||||
db.close();
|
||||
console.log("sqlite_probe_ok");
|
||||
34
charactergarden/app/src/tests/verifyDefaultSeed.ts
Normal file
34
charactergarden/app/src/tests/verifyDefaultSeed.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import { createCharacterGardenApp } from "../app";
|
||||
|
||||
function run(): void {
|
||||
const app = createCharacterGardenApp(process.env.DB_PATH ?? "/var/lib/charactergarden/app.db");
|
||||
const snapshot = app.getSnapshot();
|
||||
const rulebook = app.getRulebook();
|
||||
|
||||
assert.equal(snapshot.turns.length, 0, "Expected no persisted turns after database reset.");
|
||||
assert.ok(snapshot.worldState.entities.player, "Expected player in default world state.");
|
||||
assert.ok(snapshot.worldState.entities.room_start, "Expected room_start in default world state.");
|
||||
assert.equal(rulebook.id, "rulebook_default", "Expected default rulebook to be active.");
|
||||
assert.equal(rulebook.version, 1, "Expected default rulebook version to be 1.");
|
||||
|
||||
console.log(
|
||||
JSON.stringify(
|
||||
{
|
||||
ok: true,
|
||||
entityCount: Object.keys(snapshot.worldState.entities).length,
|
||||
turnCount: snapshot.turns.length,
|
||||
rulebookId: rulebook.id,
|
||||
rulebookVersion: rulebook.version,
|
||||
ruleCount: rulebook.rules.length,
|
||||
},
|
||||
null,
|
||||
2
|
||||
)
|
||||
);
|
||||
|
||||
app.db.close();
|
||||
}
|
||||
|
||||
run();
|
||||
Reference in New Issue
Block a user