Commit current project
This commit is contained in:
72
test/lib/twitch.test.ts
Normal file
72
test/lib/twitch.test.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
||||
import { getStreamStatuses, getRecentMessages } from "../../src/lib/twitch";
|
||||
|
||||
describe("twitch lib mocked HTTP tests", () => {
|
||||
beforeEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
});
|
||||
|
||||
it("getStreamStatuses returns correct live/offline mapping", async () => {
|
||||
// Stub fetch to return one live stream for user '1'
|
||||
vi.stubGlobal(
|
||||
"fetch",
|
||||
vi.fn().mockResolvedValue({
|
||||
ok: true,
|
||||
json: async () => ({
|
||||
data: [
|
||||
{
|
||||
user_id: "1",
|
||||
title: "Live Stream",
|
||||
viewer_count: 123,
|
||||
started_at: "2024-01-01T00:00:00Z",
|
||||
},
|
||||
],
|
||||
}),
|
||||
}),
|
||||
);
|
||||
|
||||
const result = await getStreamStatuses("token", "client", ["1", "2"]);
|
||||
|
||||
expect(result["1"]).toBeDefined();
|
||||
expect(result["1"].isLive).toBe(true);
|
||||
expect(result["1"].title).toBe("Live Stream");
|
||||
expect(result["1"].viewerCount).toBe(123);
|
||||
|
||||
expect(result["2"]).toBeDefined();
|
||||
expect(result["2"].isLive).toBe(false);
|
||||
});
|
||||
|
||||
it("getRecentMessages parses raw IRC messages", async () => {
|
||||
const rawMsg =
|
||||
"@badge-info=;badges=moderator/1;color=#1E90FF;display-name=Mod;emotes=;tmi-sent-ts=1620000000000;user-id=456 :mod!mod@mod.tmi.twitch.tv PRIVMSG #channel :Hello there";
|
||||
|
||||
vi.stubGlobal(
|
||||
"fetch",
|
||||
vi.fn().mockResolvedValue({
|
||||
ok: true,
|
||||
json: async () => ({ messages: [rawMsg] }),
|
||||
}),
|
||||
);
|
||||
|
||||
const messages = await getRecentMessages("channel");
|
||||
expect(messages).toHaveLength(1);
|
||||
const m = messages[0];
|
||||
expect(m.author).toBe("mod");
|
||||
expect(m.content).toBe("Hello there");
|
||||
expect(m.userId).toBe("456");
|
||||
expect(m.isPreloaded).toBe(true);
|
||||
});
|
||||
|
||||
it("getRecentMessages returns empty array on non-ok response", async () => {
|
||||
vi.stubGlobal(
|
||||
"fetch",
|
||||
vi.fn().mockResolvedValue({ ok: false, status: 500 }),
|
||||
);
|
||||
const messages = await getRecentMessages("channel");
|
||||
expect(messages).toEqual([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user