Skip to content

Commit 6618e35

Browse files
schurchleycciclaude
andcommitted
Add unit tests for resolveOrgAndRepos() covering all 4 branches
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 89e16c6 commit 6618e35

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { beforeEach, describe, expect, it, mock } from "bun:test";
2+
import { resolveOrgAndRepos } from "../../core/build-prompt";
3+
4+
// Mock the git-remote module
5+
const mockDetectGitHubOrgAndRepo = mock(() =>
6+
Promise.resolve({ org: "detected-org", repo: "detected-repo" }),
7+
);
8+
9+
mock.module("../../utils/git-remote", () => ({
10+
detectGitHubOrgAndRepo: mockDetectGitHubOrgAndRepo,
11+
}));
12+
13+
describe("resolveOrgAndRepos", () => {
14+
beforeEach(() => {
15+
mockDetectGitHubOrgAndRepo.mockClear();
16+
mockDetectGitHubOrgAndRepo.mockResolvedValue({
17+
org: "detected-org",
18+
repo: "detected-repo",
19+
});
20+
});
21+
22+
it("throws when org is provided without repos", async () => {
23+
await expect(resolveOrgAndRepos({ org: "my-org", repos: [] })).rejects.toThrow(
24+
"--repos is required when --org is provided",
25+
);
26+
});
27+
28+
it("returns org and repos as-is when both are provided", async () => {
29+
const result = await resolveOrgAndRepos({
30+
org: "my-org",
31+
repos: ["repo-a", "repo-b"],
32+
});
33+
34+
expect(result).toEqual({ org: "my-org", repos: ["repo-a", "repo-b"] });
35+
expect(mockDetectGitHubOrgAndRepo).not.toHaveBeenCalled();
36+
});
37+
38+
it("auto-detects org and repo when neither is provided", async () => {
39+
const result = await resolveOrgAndRepos({ repos: [] });
40+
41+
expect(result).toEqual({
42+
org: "detected-org",
43+
repos: ["detected-repo"],
44+
});
45+
expect(mockDetectGitHubOrgAndRepo).toHaveBeenCalledTimes(1);
46+
});
47+
48+
it("auto-detects org when only repos are provided", async () => {
49+
const result = await resolveOrgAndRepos({
50+
repos: ["custom-repo-1", "custom-repo-2"],
51+
});
52+
53+
expect(result).toEqual({
54+
org: "detected-org",
55+
repos: ["custom-repo-1", "custom-repo-2"],
56+
});
57+
expect(mockDetectGitHubOrgAndRepo).toHaveBeenCalledTimes(1);
58+
});
59+
});

0 commit comments

Comments
 (0)