Lumi/scripts/verify-user-favorites.js
2026-07-29 23:41:34 +02:00

33 lines
1.4 KiB
JavaScript

const assert = require("assert");
const Database = require("better-sqlite3");
const { getFavoriteCommand, getFavoriteExpression } = require("../src/services/user-favorites");
const db = new Database(":memory:");
db.exec(`
CREATE TABLE command_user_usage (
command_id TEXT NOT NULL,
user_id TEXT NOT NULL,
count INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
PRIMARY KEY (command_id, user_id)
);
CREATE TABLE expression_user_stats (
action TEXT NOT NULL,
user_id TEXT NOT NULL,
given_count INTEGER NOT NULL,
received_count INTEGER NOT NULL,
PRIMARY KEY (action, user_id)
);
`);
db.prepare("INSERT INTO command_user_usage VALUES (?, ?, ?, ?)").run("custom:hello", "user-1", 4, 10);
db.prepare("INSERT INTO command_user_usage VALUES (?, ?, ?, ?)").run("music", "user-1", 7, 20);
db.prepare("INSERT INTO expression_user_stats VALUES (?, ?, ?, ?)").run("hug", "user-1", 3, 6);
db.prepare("INSERT INTO expression_user_stats VALUES (?, ?, ?, ?)").run("wave", "user-1", 4, 1);
assert.deepStrictEqual(getFavoriteCommand(db, "user-1", "!"), { command: "!music", count: 7 });
assert.deepStrictEqual(getFavoriteExpression(db, "user-1"), { action: "hug", count: 9 });
assert.strictEqual(getFavoriteCommand(db, "missing", "!"), null);
assert.strictEqual(getFavoriteExpression(db, "missing"), null);
db.close();
console.log("User favorites verification passed.");