Reviewed-on: #89 Co-authored-by: Timo Behrendt <t.behrendt@t00n.de> Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
This commit was merged in pull request #89.
This commit is contained in:
+22
-22
@@ -1,28 +1,30 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi, type MockedFunction } from "vitest";
|
||||
|
||||
import {
|
||||
IncrementType,
|
||||
Tag,
|
||||
GitService,
|
||||
CoreService,
|
||||
ConventionalCommitAnalyzer,
|
||||
TagService,
|
||||
TagIncrementer,
|
||||
LocalGitService,
|
||||
CoreService,
|
||||
GitService,
|
||||
IncrementType,
|
||||
LocalCoreService,
|
||||
LocalGitService,
|
||||
Tag,
|
||||
TagIncrementer,
|
||||
TagService,
|
||||
} from "./main";
|
||||
|
||||
// Mock child_process.execSync
|
||||
jest.mock("child_process", () => ({
|
||||
execSync: jest.fn(),
|
||||
vi.mock("child_process", () => ({
|
||||
execSync: vi.fn(),
|
||||
}));
|
||||
|
||||
import { execSync } from "child_process";
|
||||
const mockExecSync = execSync as jest.MockedFunction<typeof execSync>;
|
||||
const mockExecSync = execSync as MockedFunction<typeof execSync>;
|
||||
|
||||
// Mock interfaces for testing
|
||||
class MockGitService implements GitService {
|
||||
constructor(
|
||||
private mockTags: { name: string }[] = [],
|
||||
private mockCommit: { commit: { message: string } } = { commit: { message: "test commit" } }
|
||||
private mockCommit: { commit: { message: string } } = { commit: { message: "test commit" } },
|
||||
) {}
|
||||
|
||||
async listTags(perPage: number): Promise<{ name: string }[]> {
|
||||
@@ -174,19 +176,19 @@ describe("TagService", () => {
|
||||
|
||||
it("should throw error for invalid format", () => {
|
||||
expect(() => tagService.parseTag("invalid")).toThrow(
|
||||
"Invalid tag format: invalid. Expected semantic version (e.g., 1.2.3)"
|
||||
"Invalid tag format: invalid. Expected semantic version (e.g., 1.2.3)",
|
||||
);
|
||||
});
|
||||
|
||||
it("should throw error for non-numeric versions", () => {
|
||||
expect(() => tagService.parseTag("1.a.3")).toThrow(
|
||||
"Invalid tag format: 1.a.3. Expected semantic version (e.g., 1.2.3)"
|
||||
"Invalid tag format: 1.a.3. Expected semantic version (e.g., 1.2.3)",
|
||||
);
|
||||
});
|
||||
|
||||
it("should throw error for incomplete version", () => {
|
||||
expect(() => tagService.parseTag("1.2")).toThrow(
|
||||
"Invalid tag format: 1.2. Expected semantic version (e.g., 1.2.3)"
|
||||
"Invalid tag format: 1.2. Expected semantic version (e.g., 1.2.3)",
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -209,7 +211,7 @@ describe("TagIncrementer", () => {
|
||||
mockGitService,
|
||||
mockCoreService,
|
||||
mockCommitAnalyzer,
|
||||
mockTagService
|
||||
mockTagService,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -241,7 +243,7 @@ describe("TagIncrementer", () => {
|
||||
|
||||
expect(result).toBe("0.0.0");
|
||||
expect(mockCoreService.getWarnings()).toContain(
|
||||
"WARNING: No tags found in repository, defaulting to 0.0.0"
|
||||
"WARNING: No tags found in repository, defaulting to 0.0.0",
|
||||
);
|
||||
});
|
||||
|
||||
@@ -269,7 +271,7 @@ describe("TagIncrementer", () => {
|
||||
|
||||
expect(result).toBe("0.0.0");
|
||||
expect(mockCoreService.getWarnings()).toContain(
|
||||
"WARNING: No real tags found (only pre-release tags), defaulting to 0.0.0"
|
||||
"WARNING: No real tags found (only pre-release tags), defaulting to 0.0.0",
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -426,7 +428,7 @@ describe("LocalGitService", () => {
|
||||
});
|
||||
|
||||
await expect(localGitService.testConnection()).rejects.toThrow(
|
||||
"Not in a git repository. Please ensure this action runs after checkout."
|
||||
"Not in a git repository. Please ensure this action runs after checkout.",
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -439,8 +441,6 @@ describe("LocalCoreService", () => {
|
||||
localCoreService = new LocalCoreService();
|
||||
});
|
||||
|
||||
// @actions/core is mocked via jest.config.js moduleNameMapper
|
||||
|
||||
it("should have all required methods", () => {
|
||||
expect(typeof localCoreService.getInput).toBe("function");
|
||||
expect(typeof localCoreService.info).toBe("function");
|
||||
@@ -457,7 +457,7 @@ describe("TagIncrementer Integration", () => {
|
||||
[{ name: "v2.0.0-rc-26035c6e13" }, { name: "v1.1.4-rc-aa512edb16" }, { name: "v1.2.3" }],
|
||||
{
|
||||
commit: { message: "feat: new feature" },
|
||||
}
|
||||
},
|
||||
);
|
||||
const mockCoreService = new MockCoreService();
|
||||
const commitAnalyzer = new ConventionalCommitAnalyzer();
|
||||
@@ -467,7 +467,7 @@ describe("TagIncrementer Integration", () => {
|
||||
mockGitService,
|
||||
mockCoreService,
|
||||
commitAnalyzer,
|
||||
tagService
|
||||
tagService,
|
||||
);
|
||||
|
||||
const result = await tagIncrementer.incrementTag(undefined, "ref");
|
||||
|
||||
Reference in New Issue
Block a user