diff --git a/src/github/context.ts b/src/github/context.ts index d8b1581..f0e81b5 100644 --- a/src/github/context.ts +++ b/src/github/context.ts @@ -1,6 +1,7 @@ import * as github from "@actions/github"; import type { IssuesEvent, + IssuesAssignedEvent, IssueCommentEvent, PullRequestEvent, PullRequestReviewEvent, @@ -147,3 +148,9 @@ export function isPullRequestReviewCommentEvent( ): context is ParsedGitHubContext & { payload: PullRequestReviewCommentEvent } { return context.eventName === "pull_request_review_comment"; } + +export function isIssuesAssignedEvent( + context: ParsedGitHubContext, +): context is ParsedGitHubContext & { payload: IssuesAssignedEvent } { + return isIssuesEvent(context) && context.eventAction === "assigned"; +} diff --git a/src/github/validation/trigger.ts b/src/github/validation/trigger.ts index 6a06153..40ee933 100644 --- a/src/github/validation/trigger.ts +++ b/src/github/validation/trigger.ts @@ -3,6 +3,7 @@ import * as core from "@actions/core"; import { isIssuesEvent, + isIssuesAssignedEvent, isIssueCommentEvent, isPullRequestEvent, isPullRequestReviewEvent, @@ -22,10 +23,10 @@ export function checkContainsTrigger(context: ParsedGitHubContext): boolean { } // Check for assignee trigger - if (isIssuesEvent(context) && context.eventAction === "assigned") { + if (isIssuesAssignedEvent(context)) { // Remove @ symbol from assignee_trigger if present let triggerUser = assigneeTrigger.replace(/^@/, ""); - const assigneeUsername = context.payload.issue.assignee?.login || ""; + const assigneeUsername = context.payload.assignee?.login || ""; if (triggerUser && assigneeUsername === triggerUser) { console.log(`Issue assigned to trigger user '${triggerUser}'`); diff --git a/test/mockContext.ts b/test/mockContext.ts index 692137c..65250c1 100644 --- a/test/mockContext.ts +++ b/test/mockContext.ts @@ -91,6 +91,12 @@ export const mockIssueAssignedContext: ParsedGitHubContext = { actor: "admin-user", payload: { action: "assigned", + assignee: { + login: "claude-bot", + id: 11111, + avatar_url: "https://avatars.githubusercontent.com/u/11111", + html_url: "https://github.com/claude-bot", + }, issue: { number: 123, title: "Feature: Add dark mode support", diff --git a/test/trigger-validation.test.ts b/test/trigger-validation.test.ts index bbe40bd..6c368b0 100644 --- a/test/trigger-validation.test.ts +++ b/test/trigger-validation.test.ts @@ -87,6 +87,11 @@ describe("checkContainsTrigger", () => { ...mockIssueAssignedContext, payload: { ...mockIssueAssignedContext.payload, + assignee: { + ...(mockIssueAssignedContext.payload as IssuesAssignedEvent) + .assignee, + login: "otherUser", + }, issue: { ...(mockIssueAssignedContext.payload as IssuesAssignedEvent).issue, assignee: {