import type { WebClient } from "@slack/web-api" ;
import { describe, expect, it, vi } from "vitest" ;
import { readSlackMessages } from "./actions.js" ;
function createClient() {
return {
conversations: {
replies: vi.fn(async () => ({ messages: [], has_more: false })),
history: vi.fn(async () => ({ messages: [], has_more: false })),
},
} as unknown as WebClient & {
conversations: {
replies: ReturnType<typeof vi.fn>;
history: ReturnType<typeof vi.fn>;
};
};
}
describe("readSlackMessages" , () => {
it("uses conversations.replies and drops the parent message" , async () => {
const client = createClient();
client.conversations.replies.mockResolvedValueOnce({
messages: [{ ts: "171234.567" }, { ts: "171234.890" }, { ts: "171235.000" }],
has_more: true ,
});
const result = await readSlackMessages("C1" , {
client,
threadId: "171234.567" ,
token: "xoxb-test" ,
});
expect(client.conversations.replies).toHaveBeenCalledWith({
channel: "C1" ,
ts: "171234.567" ,
limit: undefined,
latest: undefined,
oldest: undefined,
});
expect(client.conversations.history).not.toHaveBeenCalled();
expect(result.messages.map((message) => message.ts)).toEqual(["171234.890" , "171235.000" ]);
});
it("uses conversations.history when threadId is missing" , async () => {
const client = createClient();
client.conversations.history.mockResolvedValueOnce({
messages: [{ ts: "1" }],
has_more: false ,
});
const result = await readSlackMessages("C1" , {
client,
limit: 20 ,
token: "xoxb-test" ,
});
expect(client.conversations.history).toHaveBeenCalledWith({
channel: "C1" ,
limit: 20 ,
latest: undefined,
oldest: undefined,
});
expect(client.conversations.replies).not.toHaveBeenCalled();
expect(result.messages.map((message) => message.ts)).toEqual(["1" ]);
});
});
Messung V0.5 in Prozent C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland