




























@@ -539,7 +539,7 @@ describe("sendMessageTelegram", () => {
539539chat: { id: "123" },
540540});
541541await sendMessageTelegram("123", "hi", { ...testCase.opts, cfg: testCase.cfg });
542-const [token, options] = requireMockCall(botCtorSpy.mock.calls[0], "bot constructor call");
542+const [token, options] = requireMockCall(botCtorSpy.mock.calls.at(0), "bot constructor call");
543543expect(token, testCase.name).toBe("tok");
544544const client = requireRecord(requireRecord(options, "bot options").client, "bot client");
545545expect(client.timeoutSeconds, testCase.name).toBe(testCase.expectedTimeout);
@@ -563,7 +563,7 @@ describe("sendMessageTelegram", () => {
563563564564await sendMessageTelegram("123", "hi", { cfg, token: "tok", accountId: "foo" });
565565566-const [token, options] = requireMockCall(botCtorSpy.mock.calls[0], "bot constructor call");
566+const [token, options] = requireMockCall(botCtorSpy.mock.calls.at(0), "bot constructor call");
567567expect(token).toBe("tok");
568568const client = requireRecord(requireRecord(options, "bot options").client, "bot client");
569569expect(client.apiRoot).toBe("https://api.telegram.org");
@@ -574,7 +574,7 @@ describe("sendMessageTelegram", () => {
574574575575await sendMessageTelegram("123", "hi", { cfg: TELEGRAM_TEST_CFG, token: "tok" });
576576577-const [middleware] = requireMockCall(botConfigUseSpy.mock.calls[0], "bot config use call");
577+const [middleware] = requireMockCall(botConfigUseSpy.mock.calls.at(0), "bot config use call");
578578expect(middleware).toBeTypeOf("function");
579579});
580580@@ -753,7 +753,7 @@ describe("sendMessageTelegram", () => {
753753});
754754try {
755755await sendMessageTelegram("123", "hi", { cfg: TELEGRAM_TEST_CFG, token: "tok" });
756-const clientFetch = (botCtorSpy.mock.calls[0]?.[1] as { client?: { fetch?: unknown } })
756+const clientFetch = (botCtorSpy.mock.calls.at(0)?.[1] as { client?: { fetch?: unknown } })
757757?.client?.fetch;
758758expect(clientFetch).toBeTypeOf("function");
759759expect(clientFetch).not.toBe(fetchSpy);
@@ -855,7 +855,7 @@ describe("sendMessageTelegram", () => {
855855messageThreadId: 99,
856856});
857857858-expectMediaSendCall(sendPhoto.mock.calls[0], "send photo call", chatId, {
858+expectMediaSendCall(sendPhoto.mock.calls.at(0), "send photo call", chatId, {
859859caption: "photo in topic",
860860parse_mode: "HTML",
861861message_thread_id: 99,
@@ -892,7 +892,7 @@ describe("sendMessageTelegram", () => {
892892mediaUrl: "https://example.com/photo.jpg",
893893});
894894895-expectMediaSendCall(sendPhoto.mock.calls[0], "send photo call", chatId, {
895+expectMediaSendCall(sendPhoto.mock.calls.at(0), "send photo call", chatId, {
896896caption: undefined,
897897});
898898expect(sendMessage).toHaveBeenCalledWith(chatId, longText, {
@@ -931,7 +931,7 @@ describe("sendMessageTelegram", () => {
931931mediaUrl: "https://example.com/photo.jpg",
932932});
933933934-expectMediaSendCall(sendPhoto.mock.calls[0], "send photo call", chatId, {
934+expectMediaSendCall(sendPhoto.mock.calls.at(0), "send photo call", chatId, {
935935caption: undefined,
936936});
937937expect(sendMessage).toHaveBeenCalledTimes(2);
@@ -968,7 +968,7 @@ describe("sendMessageTelegram", () => {
968968mediaUrl: "https://example.com/photo.jpg",
969969});
970970971-expectMediaSendCall(sendPhoto.mock.calls[0], "send photo call", chatId, {
971+expectMediaSendCall(sendPhoto.mock.calls.at(0), "send photo call", chatId, {
972972caption: shortText,
973973parse_mode: "HTML",
974974});
@@ -1001,7 +1001,7 @@ describe("sendMessageTelegram", () => {
10011001mediaUrl: "https://example.com/photo.jpg",
10021002});
100310031004-expectMediaSendCall(sendPhoto.mock.calls[0], "send photo call", chatId, {
1004+expectMediaSendCall(sendPhoto.mock.calls.at(0), "send photo call", chatId, {
10051005caption: "hi <b>boss</b>",
10061006parse_mode: "HTML",
10071007});
@@ -1039,7 +1039,7 @@ describe("sendMessageTelegram", () => {
10391039asVideoNote: true,
10401040});
104110411042-expectMediaSendCall(sendVideoNote.mock.calls[0], "send video note call", chatId, {});
1042+expectMediaSendCall(sendVideoNote.mock.calls.at(0), "send video note call", chatId, {});
10431043expect(sendMessage).toHaveBeenCalledWith(chatId, text, {
10441044parse_mode: "HTML",
10451045});
@@ -1070,8 +1070,8 @@ describe("sendMessageTelegram", () => {
10701070asVideoNote: false,
10711071});
107210721073-const [, media, videoParams] = requireMockCall(sendVideo.mock.calls[0], "send video call");
1074-expect(sendVideo.mock.calls[0]?.[0]).toBe(chatId);
1073+const [, media, videoParams] = requireMockCall(sendVideo.mock.calls.at(0), "send video call");
1074+expect(sendVideo.mock.calls.at(0)?.[0]).toBe(chatId);
10751075if (media === undefined) {
10761076throw new Error("expected send video media");
10771077}
@@ -1109,7 +1109,7 @@ describe("sendMessageTelegram", () => {
11091109});
1110111011111111expect(probeVideoDimensions).toHaveBeenCalledWith(videoBuffer);
1112-expectMediaSendCall(sendVideo.mock.calls[0], "send video call", chatId, {
1112+expectMediaSendCall(sendVideo.mock.calls.at(0), "send video call", chatId, {
11131113caption: "my caption",
11141114parse_mode: "HTML",
11151115width: 720,
@@ -1147,7 +1147,7 @@ describe("sendMessageTelegram", () => {
11471147});
1148114811491149expect(probeVideoDimensions).not.toHaveBeenCalled();
1150-expectMediaSendCall(sendVideoNote.mock.calls[0], "send video note call", chatId, {});
1150+expectMediaSendCall(sendVideoNote.mock.calls.at(0), "send video note call", chatId, {});
11511151});
1152115211531153it("applies reply markup and thread options to split video-note sends", async () => {
@@ -1224,7 +1224,7 @@ describe("sendMessageTelegram", () => {
12241224await sendMessageTelegram(chatId, testCase.text, sendOptions);
1225122512261226expectMediaSendCall(
1227-sendVideoNote.mock.calls[0],
1227+sendVideoNote.mock.calls.at(0),
12281228"send video note call",
12291229chatId,
12301230testCase.expectedVideoNote,
@@ -1261,7 +1261,7 @@ describe("sendMessageTelegram", () => {
1261126112621262await vi.runAllTimersAsync();
12631263await expect(promise).resolves.toEqual({ messageId: "1", chatId });
1264-expect(setTimeoutSpy.mock.calls[0]?.[1]).toBe(500);
1264+expect(setTimeoutSpy.mock.calls.at(0)?.[1]).toBe(500);
12651265setTimeoutSpy.mockRestore();
12661266vi.useRealTimers();
12671267});
@@ -1364,7 +1364,7 @@ describe("sendMessageTelegram", () => {
13641364});
1365136513661366expect(sendAnimation).toHaveBeenCalledTimes(1);
1367-expectMediaSendCall(sendAnimation.mock.calls[0], "send animation call", chatId, {
1367+expectMediaSendCall(sendAnimation.mock.calls.at(0), "send animation call", chatId, {
13681368caption: "caption",
13691369parse_mode: "HTML",
13701370});
@@ -1424,11 +1424,16 @@ describe("sendMessageTelegram", () => {
14241424forceDocument: true,
14251425});
142614261427-expectMediaSendCall(sendDocument.mock.calls[0], `send document call ${testCase.name}`, chatId, {
1428-caption: "caption",
1429-parse_mode: "HTML",
1430-disable_content_type_detection: true,
1431-});
1427+expectMediaSendCall(
1428+sendDocument.mock.calls.at(0),
1429+`send document call ${testCase.name}`,
1430+chatId,
1431+{
1432+caption: "caption",
1433+parse_mode: "HTML",
1434+disable_content_type_detection: true,
1435+},
1436+);
14321437expect(sendPhoto, testCase.name).not.toHaveBeenCalled();
14331438expect(sendAnimation, testCase.name).not.toHaveBeenCalled();
14341439expect(sendVideo, testCase.name).not.toHaveBeenCalled();
@@ -1466,7 +1471,7 @@ describe("sendMessageTelegram", () => {
14661471mediaUrl: "https://example.com/photo.png",
14671472});
146814731469-expectMediaSendCall(sendDocument.mock.calls[0], "send document call", chatId, {
1474+expectMediaSendCall(sendDocument.mock.calls.at(0), "send document call", chatId, {
14701475caption: "caption",
14711476parse_mode: "HTML",
14721477});
@@ -1501,7 +1506,7 @@ describe("sendMessageTelegram", () => {
15011506mediaUrl: "https://example.com/photo.png",
15021507});
150315081504-expectMediaSendCall(sendDocument.mock.calls[0], "send document call", chatId, {
1509+expectMediaSendCall(sendDocument.mock.calls.at(0), "send document call", chatId, {
15051510caption: "caption",
15061511parse_mode: "HTML",
15071512});
@@ -1532,7 +1537,7 @@ describe("sendMessageTelegram", () => {
15321537mediaUrl: "https://example.com/report.pdf",
15331538});
153415391535-expectMediaSendCall(sendDocument.mock.calls[0], "send document call", chatId, {
1540+expectMediaSendCall(sendDocument.mock.calls.at(0), "send document call", chatId, {
15361541caption: "caption",
15371542parse_mode: "HTML",
15381543});
@@ -1653,7 +1658,7 @@ describe("sendMessageTelegram", () => {
16531658const called = testCase.expectedMethod === "sendVoice" ? sendVoice : sendAudio;
16541659const notCalled = testCase.expectedMethod === "sendVoice" ? sendAudio : sendVoice;
16551660expectMediaSendCall(
1656-called.mock.calls[0],
1661+called.mock.calls.at(0),
16571662`${testCase.expectedMethod} call ${testCase.name}`,
16581663testCase.chatId,
16591664testCase.expectedOptions,
@@ -1926,12 +1931,12 @@ describe("sendMessageTelegram", () => {
19261931messageThreadId: 271,
19271932});
192819331929-expectMediaSendCall(sendPhoto.mock.calls[0], "first send photo call", chatId, {
1934+expectMediaSendCall(sendPhoto.mock.calls.at(0), "first send photo call", chatId, {
19301935caption: "photo",
19311936parse_mode: "HTML",
19321937message_thread_id: 271,
19331938});
1934-expectMediaSendCall(sendPhoto.mock.calls[1], "second send photo call", chatId, {
1939+expectMediaSendCall(sendPhoto.mock.calls.at(1), "second send photo call", chatId, {
19351940caption: "photo",
19361941parse_mode: "HTML",
19371942});
@@ -1961,7 +1966,10 @@ describe("sendMessageTelegram", () => {
19611966mediaUrl: "https://example.com/photo.jpg",
19621967});
196319681964-const [mediaUrl, options] = requireMockCall(loadWebMedia.mock.calls[0], "load web media call");
1969+const [mediaUrl, options] = requireMockCall(
1970+loadWebMedia.mock.calls.at(0),
1971+"load web media call",
1972+);
19651973expect(mediaUrl).toBe("https://example.com/photo.jpg");
19661974expect(requireRecord(options, "load web media options").maxBytes).toBe(100 * 1024 * 1024);
19671975});
@@ -1997,7 +2005,10 @@ describe("sendMessageTelegram", () => {
19972005mediaUrl: "https://example.com/photo.jpg",
19982006});
199920072000-const [mediaUrl, options] = requireMockCall(loadWebMedia.mock.calls[0], "load web media call");
2008+const [mediaUrl, options] = requireMockCall(
2009+loadWebMedia.mock.calls.at(0),
2010+"load web media call",
2011+);
20012012expect(mediaUrl).toBe("https://example.com/photo.jpg");
20022013expect(requireRecord(options, "load web media options").maxBytes).toBe(42 * 1024 * 1024);
20032014});
@@ -2021,8 +2032,8 @@ describe("sendMessageTelegram", () => {
20212032});
2022203320232034expect(sendMessage).toHaveBeenCalledTimes(2);
2024-const firstCall = requireMockCall(sendMessage.mock.calls[0], "first sendMessage call");
2025-const secondCall = requireMockCall(sendMessage.mock.calls[1], "second sendMessage call");
2035+const firstCall = requireMockCall(sendMessage.mock.calls.at(0), "first sendMessage call");
2036+const secondCall = requireMockCall(sendMessage.mock.calls.at(1), "second sendMessage call");
20262037expect((firstCall[1] as string).length).toBeLessThanOrEqual(4000);
20272038expect((secondCall[1] as string).length).toBeLessThanOrEqual(4000);
20282039expect(firstCall[2]?.reply_markup).toBeUndefined();
@@ -2050,8 +2061,8 @@ describe("sendMessageTelegram", () => {
20502061});
2051206220522063expect(sendMessage).toHaveBeenCalledTimes(2);
2053-const firstCall = requireMockCall(sendMessage.mock.calls[0], "first sendMessage call");
2054-const secondCall = requireMockCall(sendMessage.mock.calls[1], "second sendMessage call");
2064+const firstCall = requireMockCall(sendMessage.mock.calls.at(0), "first sendMessage call");
2065+const secondCall = requireMockCall(sendMessage.mock.calls.at(1), "second sendMessage call");
20552066expect(String(firstCall[1] ?? "").length).toBeLessThanOrEqual(4000);
20562067expect(String(secondCall[1] ?? "").length).toBeLessThanOrEqual(4000);
20572068expect(firstCall[2]?.parse_mode).toBe("HTML");
@@ -2089,7 +2100,7 @@ describe("sendMessageTelegram", () => {
20892100});
2090210120912102expect(sendMessage).toHaveBeenCalledTimes(4);
2092-const plainFallbackCalls = [sendMessage.mock.calls[1], sendMessage.mock.calls[3]];
2103+const plainFallbackCalls = [sendMessage.mock.calls.at(1), sendMessage.mock.calls.at(3)];
20932104expect(plainFallbackCalls.map((call) => String(call?.[1] ?? "")).join("")).toBe(plainText);
20942105expect(plainFallbackCalls.some((call) => String(call?.[1] ?? "").includes("<"))).toBe(false);
20952106expect(res.messageId).toBe("91");
@@ -2119,8 +2130,8 @@ describe("sendMessageTelegram", () => {
21192130});
2120213121212132expect(sendMessage).toHaveBeenCalledTimes(4);
2122-expect(String(sendMessage.mock.calls[0]?.[1] ?? "")).toMatch(/^&/);
2123-const plainFallbackCalls = [sendMessage.mock.calls[1], sendMessage.mock.calls[3]];
2133+expect(String(sendMessage.mock.calls.at(0)?.[1] ?? "")).toMatch(/^&/);
2134+const plainFallbackCalls = [sendMessage.mock.calls.at(1), sendMessage.mock.calls.at(3)];
21242135expect(plainFallbackCalls.map((call) => String(call?.[1] ?? "")).join("")).toBe(plainText);
21252136expect(plainFallbackCalls.every((call) => String(call?.[1] ?? "").length > 0)).toBe(true);
21262137expect(res.messageId).toBe("93");
@@ -2397,7 +2408,7 @@ describe("sendStickerTelegram", () => {
2397240823982409await vi.runAllTimersAsync();
23992410await expect(promise).resolves.toEqual({ messageId: "109", chatId });
2400-expect(setTimeoutSpy.mock.calls[0]?.[1]).toBe(1000);
2411+expect(setTimeoutSpy.mock.calls.at(0)?.[1]).toBe(1000);
24012412expect(sendSticker).toHaveBeenCalledTimes(2);
24022413setTimeoutSpy.mockRestore();
24032414vi.useRealTimers();
@@ -2658,11 +2669,11 @@ describe("editMessageTelegram", () => {
26582669});
2659267026602671expect(botCtorSpy, testCase.name).toHaveBeenCalledTimes(1);
2661-expect(botCtorSpy.mock.calls[0]?.[0], testCase.name).toBe("tok");
2672+expect(botCtorSpy.mock.calls.at(0)?.[0], testCase.name).toBe("tok");
26622673expect(botApi.editMessageText, testCase.name).toHaveBeenCalledTimes(testCase.expectedCalls);
2663267426642675const firstParams = requireRecord(
2665-(botApi.editMessageText.mock.calls[0] ?? [])[3],
2676+(botApi.editMessageText.mock.calls.at(0) ?? [])[3],
26662677"first edit params",
26672678);
26682679expect(firstParams.parse_mode, testCase.name).toBe("HTML");
@@ -2675,7 +2686,7 @@ describe("editMessageTelegram", () => {
2675268626762687if ("secondExpectReplyMarkup" in testCase && testCase.secondExpectReplyMarkup) {
26772688const secondParams = requireRecord(
2678-(botApi.editMessageText.mock.calls[1] ?? [])[3],
2689+(botApi.editMessageText.mock.calls.at(1) ?? [])[3],
26792690"second edit params",
26802691);
26812692expect(secondParams.reply_markup, testCase.name).toEqual(testCase.secondExpectReplyMarkup);
@@ -2724,7 +2735,7 @@ describe("editMessageTelegram", () => {
27242735});
2725273627262737expect(botApi.editMessageText).toHaveBeenCalledTimes(1);
2727-const params = requireRecord((botApi.editMessageText.mock.calls[0] ?? [])[3], "edit params");
2738+const params = requireRecord((botApi.editMessageText.mock.calls.at(0) ?? [])[3], "edit params");
27282739expect(params.parse_mode).toBe("HTML");
27292740expect(params.link_preview_options).toEqual({ is_disabled: true });
27302741});
@@ -2770,10 +2781,12 @@ describe("sendPollTelegram", () => {
27702781expect(res).toEqual({ messageId: "123", chatId: "555", pollId: "p1" });
27712782expect(api.sendPoll).toHaveBeenCalledTimes(1);
27722783const sendPollMock = api.sendPoll as ReturnType<typeof vi.fn>;
2773-expect(sendPollMock.mock.calls[0]?.[0]).toBe("123");
2774-expect(sendPollMock.mock.calls[0]?.[1]).toBe("Q");
2775-expect(sendPollMock.mock.calls[0]?.[2]).toEqual(["A", "B"]);
2776-expect(requireRecord(sendPollMock.mock.calls[0]?.[3], "send poll params").open_period).toBe(60);
2784+expect(sendPollMock.mock.calls.at(0)?.[0]).toBe("123");
2785+expect(sendPollMock.mock.calls.at(0)?.[1]).toBe("Q");
2786+expect(sendPollMock.mock.calls.at(0)?.[2]).toEqual(["A", "B"]);
2787+expect(requireRecord(sendPollMock.mock.calls.at(0)?.[3], "send poll params").open_period).toBe(
2788+60,
2789+);
27772790});
2778279127792792it("retries without message_thread_id on thread-not-found", async () => {
@@ -2803,10 +2816,10 @@ describe("sendPollTelegram", () => {
28032816expect(res).toEqual({ messageId: "1", chatId: "2", pollId: "p2" });
28042817expect(api.sendPoll).toHaveBeenCalledTimes(2);
28052818expect(
2806-requireRecord(api.sendPoll.mock.calls[0]?.[3], "send poll params").message_thread_id,
2819+requireRecord(api.sendPoll.mock.calls.at(0)?.[3], "send poll params").message_thread_id,
28072820).toBe(99);
28082821expect(
2809-(api.sendPoll.mock.calls[1]?.[3] as { message_thread_id?: unknown } | undefined)
2822+(api.sendPoll.mock.calls.at(1)?.[3] as { message_thread_id?: unknown } | undefined)
28102823?.message_thread_id,
28112824).toBeUndefined();
28122825});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。