fix: correct assignee trigger test to handle different assignee properly (#178)

* fix: use direct assignee field

* fix: correct assignee trigger test to handle different assignee properly

The test was failing because the mockIssueAssignedContext was missing the
top-level assignee field that the trigger validation logic checks. Added
the missing assignee field to the mock context and updated the test to
properly override both the top-level assignee and issue.assignee fields
when testing assignment to a different user.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Adjust IssuesAssignedEvent import position (#2)

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Kuma Taro
2025-06-18 02:06:06 +09:00
committed by GitHub
parent bcf2fe94f8
commit 13ccdab2f8
4 changed files with 21 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
import * as github from "@actions/github"; import * as github from "@actions/github";
import type { import type {
IssuesEvent, IssuesEvent,
IssuesAssignedEvent,
IssueCommentEvent, IssueCommentEvent,
PullRequestEvent, PullRequestEvent,
PullRequestReviewEvent, PullRequestReviewEvent,
@@ -147,3 +148,9 @@ export function isPullRequestReviewCommentEvent(
): context is ParsedGitHubContext & { payload: PullRequestReviewCommentEvent } { ): context is ParsedGitHubContext & { payload: PullRequestReviewCommentEvent } {
return context.eventName === "pull_request_review_comment"; return context.eventName === "pull_request_review_comment";
} }
export function isIssuesAssignedEvent(
context: ParsedGitHubContext,
): context is ParsedGitHubContext & { payload: IssuesAssignedEvent } {
return isIssuesEvent(context) && context.eventAction === "assigned";
}

View File

@@ -3,6 +3,7 @@
import * as core from "@actions/core"; import * as core from "@actions/core";
import { import {
isIssuesEvent, isIssuesEvent,
isIssuesAssignedEvent,
isIssueCommentEvent, isIssueCommentEvent,
isPullRequestEvent, isPullRequestEvent,
isPullRequestReviewEvent, isPullRequestReviewEvent,
@@ -22,10 +23,10 @@ export function checkContainsTrigger(context: ParsedGitHubContext): boolean {
} }
// Check for assignee trigger // Check for assignee trigger
if (isIssuesEvent(context) && context.eventAction === "assigned") { if (isIssuesAssignedEvent(context)) {
// Remove @ symbol from assignee_trigger if present // Remove @ symbol from assignee_trigger if present
let triggerUser = assigneeTrigger.replace(/^@/, ""); let triggerUser = assigneeTrigger.replace(/^@/, "");
const assigneeUsername = context.payload.issue.assignee?.login || ""; const assigneeUsername = context.payload.assignee?.login || "";
if (triggerUser && assigneeUsername === triggerUser) { if (triggerUser && assigneeUsername === triggerUser) {
console.log(`Issue assigned to trigger user '${triggerUser}'`); console.log(`Issue assigned to trigger user '${triggerUser}'`);

View File

@@ -91,6 +91,12 @@ export const mockIssueAssignedContext: ParsedGitHubContext = {
actor: "admin-user", actor: "admin-user",
payload: { payload: {
action: "assigned", action: "assigned",
assignee: {
login: "claude-bot",
id: 11111,
avatar_url: "https://avatars.githubusercontent.com/u/11111",
html_url: "https://github.com/claude-bot",
},
issue: { issue: {
number: 123, number: 123,
title: "Feature: Add dark mode support", title: "Feature: Add dark mode support",

View File

@@ -87,6 +87,11 @@ describe("checkContainsTrigger", () => {
...mockIssueAssignedContext, ...mockIssueAssignedContext,
payload: { payload: {
...mockIssueAssignedContext.payload, ...mockIssueAssignedContext.payload,
assignee: {
...(mockIssueAssignedContext.payload as IssuesAssignedEvent)
.assignee,
login: "otherUser",
},
issue: { issue: {
...(mockIssueAssignedContext.payload as IssuesAssignedEvent).issue, ...(mockIssueAssignedContext.payload as IssuesAssignedEvent).issue,
assignee: { assignee: {