import { describe, expect, it } from "vite-plus/test"; import { resolveNewTaskBranchWorktreePath, resolveNewTaskBranchLabel, resolveNewTaskLocalWorkspaceSelection,} from "./new-task-context-presentation"; describe("resolveNewTaskLocalWorkspaceSelection", () => { it("waits for refs instead of carrying a worktree base into Current checkout", () => { expect( resolveNewTaskLocalWorkspaceSelection({ branches: [], projectCwd: "/repo", }), ).toEqual({ branch: null, worktreePath: null, awaitsCurrentBranch: true, }); }); it("adopts the checkout's current branch once refs load", () => { expect( resolveNewTaskLocalWorkspaceSelection({ branches: [ { name: "feature/worktree-base", current: false, worktreePath: "/worktree" }, { name: "main", current: true, worktreePath: "/repo" }, ], projectCwd: "/repo", }), ).toEqual({ branch: "main", worktreePath: null, awaitsCurrentBranch: false, }); }); it("carries the worktree path when the current branch lives in another worktree", () => { expect( resolveNewTaskLocalWorkspaceSelection({ branches: [ { name: "feature/split", current: true, worktreePath: "/repo/.t3/worktrees/split" }, { name: "main", current: false, worktreePath: "/repo" }, ], projectCwd: "/repo", }), ).toEqual({ branch: "feature/split", worktreePath: "/repo/.t3/worktrees/split", awaitsCurrentBranch: false, }); });}); describe("resolveNewTaskBranchWorktreePath", () => { it("moves Current checkout to the selected existing worktree", () => { expect( resolveNewTaskBranchWorktreePath({ workspaceMode: "local", projectCwd: "/repo", branchWorktreePath: "/repo/.t3/worktrees/feature", }), ).toBe("/repo/.t3/worktrees/feature"); }); it("keeps the project checkout represented by a null override", () => { expect( resolveNewTaskBranchWorktreePath({ workspaceMode: "local", projectCwd: "/repo", branchWorktreePath: "/repo", }), ).toBeNull(); }); it("does not reuse an existing worktree while creating a new one", () => { expect( resolveNewTaskBranchWorktreePath({ workspaceMode: "worktree", projectCwd: "/repo", branchWorktreePath: "/repo/.t3/worktrees/feature", }), ).toBeNull(); });}); describe("resolveNewTaskBranchLabel", () => { it("shows the checked-out branch without a base-ref prefix", () => { expect( resolveNewTaskBranchLabel({ branchName: "feature/mobile", startFromOrigin: true, workspaceMode: "local", }), ).toBe("feature/mobile"); }); it("labels a local worktree base with From", () => { expect( resolveNewTaskBranchLabel({ branchName: "main", startFromOrigin: false, workspaceMode: "worktree", }), ).toBe("From main"); }); it("labels a remote worktree base with From origin", () => { expect( resolveNewTaskBranchLabel({ branchName: "main", startFromOrigin: true, workspaceMode: "worktree", }), ).toBe("From origin/main"); }); it("prompts when no branch is available", () => { expect( resolveNewTaskBranchLabel({ branchName: null, startFromOrigin: true, workspaceMode: "worktree", }), ).toBe("Choose branch"); });});
import { describe, expect, it } from "vite-plus/test";
import {
resolveNewTaskBranchWorktreePath,
resolveNewTaskBranchLabel,
resolveNewTaskLocalWorkspaceSelection,
} from "./new-task-context-presentation";
describe("resolveNewTaskLocalWorkspaceSelection", () => {
it("waits for refs instead of carrying a worktree base into Current checkout", () => {
expect(
resolveNewTaskLocalWorkspaceSelection({
branches: [],
projectCwd: "/repo",
}),
).toEqual({
branch: null,
worktreePath: null,
awaitsCurrentBranch: true,
});
});
it("adopts the checkout's current branch once refs load", () => {
expect(
resolveNewTaskLocalWorkspaceSelection({
branches: [
{ name: "feature/worktree-base", current: false, worktreePath: "/worktree" },
{ name: "main", current: true, worktreePath: "/repo" },
],
projectCwd: "/repo",
}),
).toEqual({
branch: "main",
worktreePath: null,
awaitsCurrentBranch: false,
});
});
it("carries the worktree path when the current branch lives in another worktree", () => {
expect(
resolveNewTaskLocalWorkspaceSelection({
branches: [
{ name: "feature/split", current: true, worktreePath: "/repo/.t3/worktrees/split" },
{ name: "main", current: false, worktreePath: "/repo" },
],
projectCwd: "/repo",
}),
).toEqual({
branch: "feature/split",
worktreePath: "/repo/.t3/worktrees/split",
awaitsCurrentBranch: false,
});
});
});
describe("resolveNewTaskBranchWorktreePath", () => {
it("moves Current checkout to the selected existing worktree", () => {
expect(
resolveNewTaskBranchWorktreePath({
workspaceMode: "local",
projectCwd: "/repo",
branchWorktreePath: "/repo/.t3/worktrees/feature",
}),
).toBe("/repo/.t3/worktrees/feature");
});
it("keeps the project checkout represented by a null override", () => {
expect(
resolveNewTaskBranchWorktreePath({
workspaceMode: "local",
projectCwd: "/repo",
branchWorktreePath: "/repo",
}),
).toBeNull();
});
it("does not reuse an existing worktree while creating a new one", () => {
expect(
resolveNewTaskBranchWorktreePath({
workspaceMode: "worktree",
projectCwd: "/repo",
branchWorktreePath: "/repo/.t3/worktrees/feature",
}),
).toBeNull();
});
});
describe("resolveNewTaskBranchLabel", () => {
it("shows the checked-out branch without a base-ref prefix", () => {
expect(
resolveNewTaskBranchLabel({
branchName: "feature/mobile",
startFromOrigin: true,
workspaceMode: "local",
}),
).toBe("feature/mobile");
});
it("labels a local worktree base with From", () => {
expect(
resolveNewTaskBranchLabel({
branchName: "main",
startFromOrigin: false,
workspaceMode: "worktree",
}),
).toBe("From main");
});
it("labels a remote worktree base with From origin", () => {
expect(
resolveNewTaskBranchLabel({
branchName: "main",
startFromOrigin: true,
workspaceMode: "worktree",
}),
).toBe("From origin/main");
});
it("prompts when no branch is available", () => {
expect(
resolveNewTaskBranchLabel({
branchName: null,
startFromOrigin: true,
workspaceMode: "worktree",
}),
).toBe("Choose branch");
});
});