Skip to content

Commit 0d277e9

Browse files
committed
test: tighten slack thread cfg assertions
1 parent 255f964 commit 0d277e9

1 file changed

Lines changed: 34 additions & 35 deletions

File tree

extensions/slack/src/action-runtime.test.ts

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ describe("handleSlackAction", () => {
4848
return { cfg, context, hasRepliedRef };
4949
}
5050

51-
function expectLastSlackSend(content: string, threadTs?: string) {
51+
function expectLastSlackSend(content: string, cfg: OpenClawConfig, threadTs?: string) {
5252
expect(sendSlackMessage).toHaveBeenLastCalledWith(
5353
"channel:C123",
5454
content,
5555
expect.objectContaining({
56-
cfg: expect.any(Object),
56+
cfg,
5757
mediaUrl: undefined,
5858
threadTs,
5959
blocks: undefined,
@@ -70,7 +70,7 @@ describe("handleSlackAction", () => {
7070
params.cfg,
7171
params.context,
7272
);
73-
expectLastSlackSend("Second");
73+
expectLastSlackSend("Second", params.cfg);
7474
}
7575

7676
async function resolveReadToken(cfg: OpenClawConfig): Promise<string | undefined> {
@@ -189,20 +189,21 @@ describe("handleSlackAction", () => {
189189
});
190190

191191
it("passes threadTs to sendSlackMessage for thread replies", async () => {
192+
const cfg = slackConfig();
192193
await handleSlackAction(
193194
{
194195
action: "sendMessage",
195196
to: "channel:C123",
196197
content: "Hello thread",
197198
threadTs: "1234567890.123456",
198199
},
199-
slackConfig(),
200+
cfg,
200201
);
201202
expect(sendSlackMessage).toHaveBeenCalledWith(
202203
"channel:C123",
203204
"Hello thread",
204205
expect.objectContaining({
205-
cfg: expect.any(Object),
206+
cfg,
206207
mediaUrl: undefined,
207208
threadTs: "1234567890.123456",
208209
blocks: undefined,
@@ -506,20 +507,21 @@ describe("handleSlackAction", () => {
506507
});
507508

508509
it("auto-injects threadTs from context when replyToMode=all", async () => {
510+
const cfg = slackConfig();
509511
await handleSlackAction(
510512
{
511513
action: "sendMessage",
512514
to: "channel:C123",
513515
content: "Threaded reply",
514516
},
515-
slackConfig(),
517+
cfg,
516518
{
517519
currentChannelId: "C123",
518520
currentThreadTs: "1111111111.111111",
519521
replyToMode: "all",
520522
},
521523
);
522-
expectLastSlackSend("Threaded reply", "1111111111.111111");
524+
expectLastSlackSend("Threaded reply", cfg, "1111111111.111111");
523525
});
524526

525527
it("replyToMode=first threads first message then stops", async () => {
@@ -531,7 +533,7 @@ describe("handleSlackAction", () => {
531533
context,
532534
);
533535

534-
expectLastSlackSend("First", "1111111111.111111");
536+
expectLastSlackSend("First", cfg, "1111111111.111111");
535537
await sendSecondMessageAndExpectNoThread({ cfg, context });
536538
});
537539

@@ -567,41 +569,40 @@ describe("handleSlackAction", () => {
567569
context,
568570
);
569571

570-
expectLastSlackSend("Explicit", "9999999999.999999");
572+
expectLastSlackSend("Explicit", cfg, "9999999999.999999");
571573
expect(hasRepliedRef.value).toBe(true);
572574
await sendSecondMessageAndExpectNoThread({ cfg, context });
573575
});
574576

575577
it("replyToMode=first without hasRepliedRef does not thread", async () => {
576-
await handleSlackAction(
577-
{ action: "sendMessage", to: "channel:C123", content: "No ref" },
578-
slackConfig(),
579-
{
580-
currentChannelId: "C123",
581-
currentThreadTs: "1111111111.111111",
582-
replyToMode: "first",
583-
},
584-
);
585-
expectLastSlackSend("No ref");
578+
const cfg = slackConfig();
579+
await handleSlackAction({ action: "sendMessage", to: "channel:C123", content: "No ref" }, cfg, {
580+
currentChannelId: "C123",
581+
currentThreadTs: "1111111111.111111",
582+
replyToMode: "first",
583+
});
584+
expectLastSlackSend("No ref", cfg);
586585
});
587586

588587
it("does not auto-inject threadTs when replyToMode=off", async () => {
588+
const cfg = slackConfig();
589589
await handleSlackAction(
590590
{ action: "sendMessage", to: "channel:C123", content: "No thread" },
591-
slackConfig(),
591+
cfg,
592592
{
593593
currentChannelId: "C123",
594594
currentThreadTs: "1111111111.111111",
595595
replyToMode: "off",
596596
},
597597
);
598-
expectLastSlackSend("No thread");
598+
expectLastSlackSend("No thread", cfg);
599599
});
600600

601601
it("does not auto-inject threadTs when sending to different channel", async () => {
602+
const cfg = slackConfig();
602603
await handleSlackAction(
603604
{ action: "sendMessage", to: "channel:C999", content: "Other channel" },
604-
slackConfig(),
605+
cfg,
605606
{
606607
currentChannelId: "C123",
607608
currentThreadTs: "1111111111.111111",
@@ -612,7 +613,7 @@ describe("handleSlackAction", () => {
612613
"channel:C999",
613614
"Other channel",
614615
expect.objectContaining({
615-
cfg: expect.any(Object),
616+
cfg,
616617
mediaUrl: undefined,
617618
threadTs: undefined,
618619
blocks: undefined,
@@ -621,38 +622,36 @@ describe("handleSlackAction", () => {
621622
});
622623

623624
it("explicit threadTs overrides context threadTs", async () => {
625+
const cfg = slackConfig();
624626
await handleSlackAction(
625627
{
626628
action: "sendMessage",
627629
to: "channel:C123",
628630
content: "Explicit wins",
629631
threadTs: "9999999999.999999",
630632
},
631-
slackConfig(),
633+
cfg,
632634
{
633635
currentChannelId: "C123",
634636
currentThreadTs: "1111111111.111111",
635637
replyToMode: "all",
636638
},
637639
);
638-
expectLastSlackSend("Explicit wins", "9999999999.999999");
640+
expectLastSlackSend("Explicit wins", cfg, "9999999999.999999");
639641
});
640642

641643
it("handles channel target without prefix when replyToMode=all", async () => {
642-
await handleSlackAction(
643-
{ action: "sendMessage", to: "C123", content: "Bare target" },
644-
slackConfig(),
645-
{
646-
currentChannelId: "C123",
647-
currentThreadTs: "1111111111.111111",
648-
replyToMode: "all",
649-
},
650-
);
644+
const cfg = slackConfig();
645+
await handleSlackAction({ action: "sendMessage", to: "C123", content: "Bare target" }, cfg, {
646+
currentChannelId: "C123",
647+
currentThreadTs: "1111111111.111111",
648+
replyToMode: "all",
649+
});
651650
expect(sendSlackMessage).toHaveBeenCalledWith(
652651
"C123",
653652
"Bare target",
654653
expect.objectContaining({
655-
cfg: expect.any(Object),
654+
cfg,
656655
mediaUrl: undefined,
657656
threadTs: "1111111111.111111",
658657
blocks: undefined,

0 commit comments

Comments
 (0)