From 787f0df19541196c0378a1d96aee5cb69d155c6a Mon Sep 17 00:00:00 2001 From: Paperclip Date: Fri, 11 Sep 2026 18:48:03 -0300 Subject: [PATCH] test: pin assignment wake deferral contract Co-Authored-By: Paperclip --- ...issue-update-comment-wakeup-routes.test.ts | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/server/src/__tests__/issue-update-comment-wakeup-routes.test.ts b/server/src/__tests__/issue-update-comment-wakeup-routes.test.ts index 88a45800b3..7ecd34af78 100644 --- a/server/src/__tests__/issue-update-comment-wakeup-routes.test.ts +++ b/server/src/__tests__/issue-update-comment-wakeup-routes.test.ts @@ -507,6 +507,37 @@ describe("issue update comment wakeups", () => { expect(mockIssueService.update).not.toHaveBeenCalled(); }); + it("keeps the normal assignment wake when goal wake deferral is explicitly false", async () => { + const existing = makeIssue({ assigneeAgentId: null, assigneeUserId: null, status: "todo" }); + const updated = makeIssue({ + assigneeAgentId: ASSIGNEE_AGENT_ID, + assigneeUserId: null, + status: "todo", + }); + mockIssueService.getById.mockResolvedValue(existing); + mockIssueService.update.mockResolvedValue(updated); + + const res = await request(await createApp()).patch(`/api/issues/${existing.id}`).send({ + assigneeAgentId: ASSIGNEE_AGENT_ID, + assigneeUserId: null, + deferWakeForGoal: false, + }); + + expect(res.status).toBe(200); + await vi.waitFor(() => expect(mockHeartbeatService.wakeup).toHaveBeenCalledTimes(1)); + expect(mockHeartbeatService.wakeup).toHaveBeenCalledWith( + ASSIGNEE_AGENT_ID, + expect.objectContaining({ + source: "assignment", + reason: "issue_assigned", + payload: expect.objectContaining({ + issueId: existing.id, + mutation: "update", + }), + }), + ); + }); + it("wakes the assignee on comment-only issue updates", async () => { const existing = makeIssue({ assigneeAgentId: ASSIGNEE_AGENT_ID,