
























@@ -15,6 +15,15 @@ const baseParams = {
1515replyToMode: "off" as const,
1616};
171718+function expectFields(value: unknown, expected: Record<string, unknown>): void {
19+expect(value).toBeTypeOf("object");
20+expect(value).not.toBeNull();
21+const record = value as Record<string, unknown>;
22+for (const [key, expectedValue] of Object.entries(expected)) {
23+expect(record[key], key).toEqual(expectedValue);
24+}
25+}
26+1827async function expectSameTargetRepliesDelivered(params: { provider: string; to: string }) {
1928const { replyPayloads } = await buildReplyPayloads({
2029 ...baseParams,
@@ -68,11 +77,11 @@ describe("buildReplyPayloads media filter integration", () => {
6877});
69787079expect(replyPayloads).toHaveLength(1);
71-expect(replyPayloads[0]).toMatchObject({
80+expectFields(replyPayloads[0], {
7281text: "⚠️ API rate limit reached.",
7382replyToId: "msg-1",
7483});
75-expect(getReplyPayloadMetadata(replyPayloads[0])).toMatchObject({
84+expectFields(getReplyPayloadMetadata(replyPayloads[0]), {
7685deliverDespiteSourceReplySuppression: true,
7786});
7887});
@@ -118,7 +127,7 @@ describe("buildReplyPayloads media filter integration", () => {
118127});
119128120129expect(replyPayloads).toHaveLength(1);
121-expect(replyPayloads[0]).toMatchObject({
130+expectFields(replyPayloads[0], {
122131text: "hello",
123132mediaUrl: undefined,
124133mediaUrls: undefined,
@@ -143,13 +152,13 @@ describe("buildReplyPayloads media filter integration", () => {
143152});
144153145154expect(replyPayloads).toHaveLength(2);
146-expect(replyPayloads[0]).toMatchObject({
155+expectFields(replyPayloads[0], {
147156text: "keep text",
148157mediaUrl: undefined,
149158mediaUrls: undefined,
150159audioAsVoice: false,
151160});
152-expect(replyPayloads[1]).toMatchObject({
161+expectFields(replyPayloads[1], {
153162text: "keep second",
154163});
155164});
@@ -174,7 +183,7 @@ describe("buildReplyPayloads media filter integration", () => {
174183});
175184176185expect(replyPayloads).toHaveLength(1);
177-expect(replyPayloads[0]).toMatchObject({
186+expectFields(replyPayloads[0], {
178187text: "hello world!",
179188mediaUrl: "file:///tmp/photo.jpg",
180189});
@@ -287,7 +296,7 @@ describe("buildReplyPayloads media filter integration", () => {
287296});
288297289298expect(replyPayloads).toHaveLength(1);
290-expect(replyPayloads[0]).toMatchObject({
299+expectFields(replyPayloads[0], {
291300text: "photo",
292301mediaUrl: undefined,
293302mediaUrls: undefined,
@@ -407,7 +416,7 @@ describe("buildReplyPayloads media filter integration", () => {
407416});
408417409418expect(replyPayloads).toHaveLength(1);
410-expect(replyPayloads[0]).toMatchObject({
419+expectFields(replyPayloads[0], {
411420text: "caption",
412421mediaUrl: undefined,
413422mediaUrls: undefined,
@@ -492,7 +501,7 @@ describe("buildReplyPayloads media filter integration", () => {
492501});
493502494503expect(replyPayloads).toHaveLength(1);
495-expect(replyPayloads[0]).toMatchObject({
504+expectFields(replyPayloads[0], {
496505mediaUrl: "/tmp/generated.png",
497506text: undefined,
498507});
@@ -541,7 +550,7 @@ describe("buildReplyPayloads media filter integration", () => {
541550});
542551543552expect(replyPayloads).toHaveLength(1);
544-expect(replyPayloads[0]).toMatchObject({
553+expectFields(replyPayloads[0], {
545554text: "Agent couldn't generate a response. Please try again.",
546555isError: true,
547556});
@@ -565,7 +574,7 @@ describe("buildReplyPayloads media filter integration", () => {
565574});
566575567576expect(replyPayloads).toHaveLength(1);
568-expect(replyPayloads[0]).toMatchObject({
577+expectFields(replyPayloads[0], {
569578text: undefined,
570579mediaUrl: "file:///tmp/voice.opus",
571580audioAsVoice: true,
@@ -604,7 +613,7 @@ describe("buildReplyPayloads media filter integration", () => {
604613});
605614606615expect(replyPayloads).toHaveLength(1);
607-expect(replyPayloads[0]).toMatchObject({
616+expectFields(replyPayloads[0], {
608617text: "Here you go",
609618mediaUrl: "https://example.com/chart.png",
610619mediaUrls: ["https://example.com/chart.png"],
@@ -619,7 +628,7 @@ describe("buildReplyPayloads media filter integration", () => {
619628});
620629621630expect(replyPayloads).toHaveLength(1);
622-expect(replyPayloads[0]).toMatchObject({
631+expectFields(replyPayloads[0], {
623632text: "Look now",
624633mediaUrl: "https://example.com/chart.png",
625634mediaUrls: ["https://example.com/chart.png"],
@@ -635,7 +644,7 @@ describe("buildReplyPayloads media filter integration", () => {
635644});
636645637646expect(replyPayloads).toHaveLength(1);
638-expect(replyPayloads[0]).toMatchObject({
647+expectFields(replyPayloads[0], {
639648 text,
640649});
641650expect(replyPayloads[0]?.mediaUrl).toBeUndefined();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。