import { describe, expect, it } from "vitest" ;
import {
normalizeSlackMessagingTarget,
parseSlackTarget,
resolveSlackChannelId,
} from "./targets.js" ;
describe("parseSlackTarget" , () => {
it("parses user mentions and prefixes" , () => {
const cases = [
{ input: "<@U123>" , id: "U123" , normalized: "user:u123" },
{ input: "user:U456" , id: "U456" , normalized: "user:u456" },
{ input: "slack:U789" , id: "U789" , normalized: "user:u789" },
] as const ;
for (const testCase of cases) {
expect(parseSlackTarget(testCase.input), testCase.input).toMatchObject({
kind: "user" ,
id: testCase.id,
normalized: testCase.normalized,
});
}
});
it("parses channel targets" , () => {
const cases = [
{ input: "channel:C123" , id: "C123" , normalized: "channel:c123" },
{ input: "#C999" , id: "C999" , normalized: "channel:c999" },
] as const ;
for (const testCase of cases) {
expect(parseSlackTarget(testCase.input), testCase.input).toMatchObject({
kind: "channel" ,
id: testCase.id,
normalized: testCase.normalized,
});
}
});
it("rejects invalid @ and # targets" , () => {
const cases = [
{ input: "@bob-1" , expectedMessage: /Slack DMs require a user id/ },
{ input: "#general-1" , expectedMessage: /Slack channels require a channel id/ },
] as const ;
for (const testCase of cases) {
expect(() => parseSlackTarget(testCase.input), testCase.input).toThrow(
testCase.expectedMessage,
);
}
});
});
describe("resolveSlackChannelId" , () => {
it("strips channel: prefix and accepts raw ids" , () => {
expect(resolveSlackChannelId("channel:C123" )).toBe("C123" );
expect(resolveSlackChannelId("C123" )).toBe("C123" );
});
it("rejects user targets" , () => {
expect(() => resolveSlackChannelId("user:U123" )).toThrow(/channel id is required/i);
});
});
describe("normalizeSlackMessagingTarget" , () => {
it("defaults raw ids to channels" , () => {
expect(normalizeSlackMessagingTarget("C123" )).toBe("channel:c123" );
});
});
Messung V0.5 in Prozent C=100 H=58 G=81
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland