Files
t8y2--dbx/packages/app-tests/redisCommandSession.test.ts
2026-07-13 13:09:14 +08:00

28 lines
1.3 KiB
TypeScript
Vendored

import assert from "node:assert/strict";
import { test } from "vitest";
import { isRedisClearScreenCommand, nextRedisCommandDb, redisKeyTextToRaw } from "../../apps/desktop/src/lib/redis/redisCommandSession.ts";
test("keeps Redis command session database after SELECT succeeds", () => {
assert.equal(nextRedisCommandDb(3, "SELECT 0", "OK"), 0);
assert.equal(nextRedisCommandDb(0, "select 12", "OK"), 12);
});
test("does not change Redis command session database for failed or non-select commands", () => {
assert.equal(nextRedisCommandDb(3, "SELECT nope", "OK"), 3);
assert.equal(nextRedisCommandDb(3, "SELECT 2", "ERR invalid DB index"), 3);
assert.equal(nextRedisCommandDb(3, "HGET farmer:1 balance", "42"), 3);
});
test("recognizes local Redis terminal clear commands", () => {
assert.equal(isRedisClearScreenCommand("clear"), true);
assert.equal(isRedisClearScreenCommand(" CLEAR "), true);
assert.equal(isRedisClearScreenCommand("cls"), true);
assert.equal(isRedisClearScreenCommand("clear key"), false);
assert.equal(isRedisClearScreenCommand("DEL clear"), false);
});
test("encodes Redis key text as the raw base64 transport value", () => {
assert.equal(redisKeyTextToRaw("user:1"), "dXNlcjox");
assert.equal(redisKeyTextToRaw("用户:配置"), "55So5oi3OumFjee9rg==");
});