test + formatting fixes

This commit is contained in:
km-anthropic
2025-08-07 00:27:35 -07:00
parent 9a665625f7
commit da182b6afb
9 changed files with 202 additions and 68 deletions

View File

@@ -157,7 +157,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("You are Claude, an AI assistant");
expect(prompt).toContain("<event_type>GENERAL_COMMENT</event_type>");
@@ -185,7 +190,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("<event_type>PR_REVIEW</event_type>");
expect(prompt).toContain("<is_pr>true</is_pr>");
@@ -211,7 +221,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("<event_type>ISSUE_CREATED</event_type>");
expect(prompt).toContain(
@@ -239,7 +254,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("<event_type>ISSUE_ASSIGNED</event_type>");
expect(prompt).toContain(
@@ -266,7 +286,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("<event_type>ISSUE_LABELED</event_type>");
expect(prompt).toContain(
@@ -293,9 +318,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = generateDefaultPrompt(envVars, mockGitHubData, false);
expect(prompt).toContain("<direct_prompt>");
expect(prompt).toContain(
"IMPORTANT: The following are direct instructions",
);
expect(prompt).toContain("Fix the bug in the login form");
expect(prompt).toContain("</direct_prompt>");
expect(prompt).toContain(
@@ -316,7 +344,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("<event_type>PULL_REQUEST</event_type>");
expect(prompt).toContain("<is_pr>true</is_pr>");
@@ -341,7 +374,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("CUSTOM INSTRUCTIONS:\nAlways use TypeScript");
});
@@ -360,7 +398,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toBe("Simple prompt for owner/repo PR #123");
expect(prompt).not.toContain("You are Claude, an AI assistant");
@@ -395,7 +438,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("Repository: test/repo");
expect(prompt).toContain("PR: 456");
@@ -442,7 +490,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, issueGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
issueGitHubData,
false,
mockTagMode,
);
expect(prompt).toBe("Issue #789: Bug: Login form broken in owner/repo");
});
@@ -462,7 +515,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toBe("PR: 123, Issue: , Comment: ");
});
@@ -482,7 +540,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("You are Claude, an AI assistant");
expect(prompt).toContain("<event_type>ISSUE_CREATED</event_type>");
@@ -505,7 +568,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
expect(prompt).toContain("<trigger_username>johndoe</trigger_username>");
// With commit signing disabled, co-author info appears in git commit instructions
@@ -527,7 +595,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
// Should contain PR-specific instructions (git commands when not using signing)
expect(prompt).toContain("git push");
@@ -558,7 +631,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
// Should contain Issue-specific instructions
expect(prompt).toContain(
@@ -597,7 +675,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
// Should contain the actual branch name with timestamp
expect(prompt).toContain(
@@ -627,7 +710,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
// Should contain branch-specific instructions like issues
expect(prompt).toContain(
@@ -665,7 +753,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
// Should contain open PR instructions (git commands when not using signing)
expect(prompt).toContain("git push");
@@ -696,7 +789,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
// Should contain new branch instructions
expect(prompt).toContain(
@@ -724,7 +822,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
// Should contain new branch instructions
expect(prompt).toContain(
@@ -752,7 +855,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
// Should contain new branch instructions
expect(prompt).toContain(
@@ -776,7 +884,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, false, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
false,
mockTagMode,
);
// Should have git command instructions
expect(prompt).toContain("Use git commands via the Bash tool");
@@ -805,7 +918,12 @@ describe("generatePrompt", () => {
},
};
const prompt = await generatePrompt(envVars, mockGitHubData, true, mockTagMode);
const prompt = await generatePrompt(
envVars,
mockGitHubData,
true,
mockTagMode,
);
// Should have commit signing tool instructions
expect(prompt).toContain("mcp__github_file_ops__commit_files");

View File

@@ -7,6 +7,12 @@ import { createMockContext, createMockAutomationContext } from "../mockContext";
describe("Mode Registry", () => {
const mockContext = createMockContext({
eventName: "issue_comment",
payload: {
action: "created",
comment: {
body: "Test comment without trigger",
},
} as any,
});
const mockWorkflowDispatchContext = createMockAutomationContext({
@@ -17,9 +23,9 @@ describe("Mode Registry", () => {
eventName: "schedule",
});
test("getMode auto-detects tag mode for issue_comment", () => {
test("getMode auto-detects agent mode for issue_comment without trigger", () => {
const mode = getMode(mockContext);
// Issue comment without trigger won't activate tag mode, defaults to agent
// Agent mode is the default when no trigger is found
expect(mode).toBe(agentMode);
expect(mode.name).toBe("agent");
});
@@ -33,7 +39,7 @@ describe("Mode Registry", () => {
test("getMode can use explicit mode override for review", () => {
const mode = getMode(mockContext, "review");
expect(mode).toBe(reviewMode);
expect(mode.name).toBe("review");
expect(mode.name).toBe("experimental-review");
});
test("getMode auto-detects agent for workflow_dispatch", () => {
@@ -51,7 +57,7 @@ describe("Mode Registry", () => {
test("getMode supports legacy experimental-review mode name", () => {
const mode = getMode(mockContext, "experimental-review");
expect(mode).toBe(reviewMode);
expect(mode.name).toBe("review");
expect(mode.name).toBe("experimental-review");
});
test("getMode auto-detects review mode for PR opened", () => {
@@ -62,13 +68,14 @@ describe("Mode Registry", () => {
});
const mode = getMode(prContext);
expect(mode).toBe(reviewMode);
expect(mode.name).toBe("agent");
expect(mode.name).toBe("experimental-review");
});
test("getMode throws error for invalid mode override", () => {
expect(() => getMode(mockContext, "invalid")).toThrow(
"Mode 'agent' not found. This should not happen. Please report this issue.",
);
test("getMode falls back to auto-detection for invalid mode override", () => {
const mode = getMode(mockContext, "invalid");
// Should fall back to auto-detection, which returns agent for issue_comment without trigger
expect(mode).toBe(agentMode);
expect(mode.name).toBe("agent");
});
test("isValidMode returns true for all valid modes", () => {