mirror of
https://github.com/block/buzz.git
synced 2026-10-27 20:41:57 +00:00
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import {
|
|
parseProjectPullRequestMergeError,
|
|
ProjectPullRequestMergeError,
|
|
} from "./projectGit.ts";
|
|
|
|
const CONFLICT = {
|
|
code: "merge_conflict",
|
|
message: "Pull request has merge conflicts.",
|
|
recovery: {
|
|
action: "open_terminal",
|
|
targetBranch: "main",
|
|
sourceBranch: "feature/demo",
|
|
},
|
|
};
|
|
|
|
test("parses structured merge conflict recovery metadata", () => {
|
|
const error = parseProjectPullRequestMergeError(CONFLICT);
|
|
|
|
assert.ok(error instanceof ProjectPullRequestMergeError);
|
|
assert.equal(error.code, "merge_conflict");
|
|
assert.deepEqual(error.recovery, CONFLICT.recovery);
|
|
});
|
|
|
|
test("parses JSON-serialized Tauri merge errors", () => {
|
|
const error = parseProjectPullRequestMergeError(JSON.stringify(CONFLICT));
|
|
|
|
assert.ok(error instanceof ProjectPullRequestMergeError);
|
|
assert.equal(error.message, "Pull request has merge conflicts.");
|
|
});
|
|
|
|
test("rejects malformed recovery metadata", () => {
|
|
assert.equal(
|
|
parseProjectPullRequestMergeError({
|
|
...CONFLICT,
|
|
recovery: { ...CONFLICT.recovery, targetBranch: null },
|
|
}),
|
|
null,
|
|
);
|
|
assert.equal(parseProjectPullRequestMergeError(new Error("offline")), null);
|
|
});
|