Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import { describe, expect, it } from "vitest";
import { MattermostConfigSchema } from "./config-schema-core.js";
describe("MattermostConfigSchema", () => {
it("accepts SecretRef botToken at top-level", () => {
const result = MattermostConfigSchema.safeParse({
botToken: { source: "env", provider: "default", id: "MATTERMOST_BOT_TOKEN" },
baseUrl: "
https://chat.example.com",
});
expect(result.success).toBe(true);
});
it("accepts SecretRef botToken on account", () => {
const result = MattermostConfigSchema.safeParse({
accounts: {
main: {
botToken: { source: "env", provider: "default", id: "MATTERMOST_BOT_TOKEN_MAIN" },
baseUrl: "
https://chat.example.com",
},
},
});
expect(result.success).toBe(true);
});
it("accepts replyToMode", () => {
const result = MattermostConfigSchema.safeParse({
replyToMode: "all",
});
expect(result.success).toBe(true);
});
it("accepts groups with requireMention", () => {
const result = MattermostConfigSchema.safeParse({
groups: {
"*": { requireMention: true },
"channel-123": { requireMention: false },
},
});
expect(result.success).toBe(true);
});
it("accepts groups on account", () => {
const result = MattermostConfigSchema.safeParse({
accounts: {
main: {
baseUrl: "
https://chat.example.com",
groups: {
"*": { requireMention: true },
},
},
},
});
expect(result.success).toBe(true);
});
it("rejects unknown properties inside groups entry", () => {
const result = MattermostConfigSchema.safeParse({
groups: {
"*": { requireMention: true, unknownProp: "bad" },
},
});
expect(result.success).toBe(false);
});
it("rejects unsupported direct-message reply threading config", () => {
const result = MattermostConfigSchema.safeParse({
dm: {
replyToMode: "all",
},
});
expect(result.success).toBe(false);
});
it("rejects unsupported per-chat-type reply threading config", () => {
const result = MattermostConfigSchema.safeParse({
replyToModeByChatType: {
direct: "all",
},
});
expect(result.success).toBe(false);
});
});