Files
Moltbot/src/config/commands.test.ts
2026-02-21 12:49:57 +01:00

135 lines
3.7 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
isCommandFlagEnabled,
isRestartEnabled,
isNativeCommandsExplicitlyDisabled,
resolveNativeCommandsEnabled,
resolveNativeSkillsEnabled,
} from "./commands.js";
describe("resolveNativeSkillsEnabled", () => {
it("uses provider defaults for auto", () => {
expect(
resolveNativeSkillsEnabled({
providerId: "discord",
globalSetting: "auto",
}),
).toBe(true);
expect(
resolveNativeSkillsEnabled({
providerId: "telegram",
globalSetting: "auto",
}),
).toBe(true);
expect(
resolveNativeSkillsEnabled({
providerId: "slack",
globalSetting: "auto",
}),
).toBe(false);
expect(
resolveNativeSkillsEnabled({
providerId: "whatsapp",
globalSetting: "auto",
}),
).toBe(false);
});
it("honors explicit provider settings", () => {
expect(
resolveNativeSkillsEnabled({
providerId: "slack",
providerSetting: true,
globalSetting: "auto",
}),
).toBe(true);
expect(
resolveNativeSkillsEnabled({
providerId: "discord",
providerSetting: false,
globalSetting: true,
}),
).toBe(false);
});
});
describe("resolveNativeCommandsEnabled", () => {
it("follows the same provider default heuristic", () => {
expect(resolveNativeCommandsEnabled({ providerId: "discord", globalSetting: "auto" })).toBe(
true,
);
expect(resolveNativeCommandsEnabled({ providerId: "telegram", globalSetting: "auto" })).toBe(
true,
);
expect(resolveNativeCommandsEnabled({ providerId: "slack", globalSetting: "auto" })).toBe(
false,
);
});
it("honors explicit provider/global booleans", () => {
expect(
resolveNativeCommandsEnabled({
providerId: "slack",
providerSetting: true,
globalSetting: false,
}),
).toBe(true);
expect(
resolveNativeCommandsEnabled({
providerId: "discord",
globalSetting: false,
}),
).toBe(false);
});
});
describe("isNativeCommandsExplicitlyDisabled", () => {
it("returns true only for explicit false at provider or fallback global", () => {
expect(
isNativeCommandsExplicitlyDisabled({ providerSetting: false, globalSetting: true }),
).toBe(true);
expect(
isNativeCommandsExplicitlyDisabled({ providerSetting: undefined, globalSetting: false }),
).toBe(true);
expect(
isNativeCommandsExplicitlyDisabled({ providerSetting: true, globalSetting: false }),
).toBe(false);
expect(
isNativeCommandsExplicitlyDisabled({ providerSetting: "auto", globalSetting: false }),
).toBe(false);
});
});
describe("isRestartEnabled", () => {
it("defaults to enabled unless explicitly false", () => {
expect(isRestartEnabled(undefined)).toBe(true);
expect(isRestartEnabled({})).toBe(true);
expect(isRestartEnabled({ commands: {} })).toBe(true);
expect(isRestartEnabled({ commands: { restart: true } })).toBe(true);
expect(isRestartEnabled({ commands: { restart: false } })).toBe(false);
});
it("ignores inherited restart flags", () => {
expect(
isRestartEnabled({
commands: Object.create({ restart: false }) as Record<string, unknown>,
}),
).toBe(true);
});
});
describe("isCommandFlagEnabled", () => {
it("requires own boolean true", () => {
expect(isCommandFlagEnabled({ commands: { bash: true } }, "bash")).toBe(true);
expect(isCommandFlagEnabled({ commands: { bash: false } }, "bash")).toBe(false);
expect(
isCommandFlagEnabled(
{
commands: Object.create({ bash: true }) as Record<string, unknown>,
},
"bash",
),
).toBe(false);
});
});