mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-08-28 16:45:22 +00:00
45 lines
1.7 KiB
TypeScript
45 lines
1.7 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { describe, it } from "node:test";
|
|
import {
|
|
parseEnabled,
|
|
parseKittyVisibility,
|
|
parseMessageMax,
|
|
parseMessageSource,
|
|
parseMinDurationMs,
|
|
parseNotificationAction,
|
|
} from "../src/parsers.ts";
|
|
|
|
describe("parsers", () => {
|
|
it("parses message source including privacy mode", () => {
|
|
assert.equal(parseMessageSource("assistant"), "assistant");
|
|
assert.equal(parseMessageSource(" user "), "user");
|
|
assert.equal(parseMessageSource("none"), "none");
|
|
assert.equal(parseMessageSource("invalid"), "assistant");
|
|
});
|
|
|
|
it("parses and clamps numeric settings", () => {
|
|
assert.equal(parseMessageMax(undefined), 80);
|
|
assert.equal(parseMessageMax("12"), 12);
|
|
assert.equal(parseMessageMax("-1"), 0);
|
|
assert.equal(parseMessageMax("999"), 500);
|
|
assert.equal(parseMessageMax("nope"), 80);
|
|
assert.equal(parseMinDurationMs(undefined), 3_000);
|
|
assert.equal(parseMinDurationMs(" "), 3_000);
|
|
assert.equal(parseMinDurationMs("1.25"), 1_250);
|
|
assert.equal(parseMinDurationMs("9999"), 3_600_000);
|
|
});
|
|
|
|
it("uses fail-safe defaults for boolean and Kitty behavior settings", () => {
|
|
assert.equal(parseEnabled(undefined), true);
|
|
assert.equal(parseEnabled("off"), false);
|
|
assert.equal(parseEnabled("yes"), true);
|
|
assert.equal(parseKittyVisibility(undefined), "always");
|
|
assert.equal(parseKittyVisibility("always"), "always");
|
|
assert.equal(parseKittyVisibility("unfocused"), "unfocused");
|
|
assert.equal(parseKittyVisibility("invisible"), "invisible");
|
|
assert.equal(parseKittyVisibility("invalid"), "always");
|
|
assert.equal(parseNotificationAction("none"), "none");
|
|
assert.equal(parseNotificationAction("invalid"), "focus");
|
|
});
|
|
});
|