Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6ef236f89 | ||
|
|
5747c71800 |
@@ -1392,7 +1392,7 @@ impl DraftPane {
|
||||
match self.branch_mode {
|
||||
WorktreeBranchMode::New => {
|
||||
let row = next_row();
|
||||
draw_gutter(f, row, "br:");
|
||||
draw_gutter(f, row, "new:");
|
||||
let col =
|
||||
draw_text_field(f, &self.branch, row, field_style(DraftField::BranchNew));
|
||||
if self.focused_field == DraftField::BranchNew {
|
||||
@@ -1416,6 +1416,7 @@ impl DraftPane {
|
||||
.unwrap_or(0)
|
||||
.min(20);
|
||||
let list_row = next_row();
|
||||
draw_gutter(f, list_row, "pick:");
|
||||
for i in start..(start + capacity).min(len.max(1)) {
|
||||
let y = list_row.y + (i - start) as u16;
|
||||
if y >= list_row.y + list_row.height {
|
||||
@@ -2541,10 +2542,25 @@ mod tests {
|
||||
draft.base_repo = Some(PathBuf::from("/home/u/tea/maestro"));
|
||||
draft.probed_cwd = Some(PathBuf::from("/home/u/tea/maestro"));
|
||||
let rendered = render_to_string(100, 24, |f| draft.render(f, f.area(), true));
|
||||
for s in ["[new] [existing]", "br:", "crimson-otter"] {
|
||||
for s in ["[new] [existing]", "new:", "crimson-otter"] {
|
||||
assert!(rendered.contains(s), "missing {s:?}:\n{rendered}");
|
||||
}
|
||||
|
||||
// The new-branch input and existing-branch picker must not share a
|
||||
// label — matching the web form's "New branch name" / "Pick a
|
||||
// branch" (#94).
|
||||
draft.set_branch_mode(WorktreeBranchMode::Existing);
|
||||
let rendered = render_to_string(100, 24, |f| draft.render(f, f.area(), true));
|
||||
assert!(
|
||||
rendered.contains("pick:"),
|
||||
"missing pick: label:\n{rendered}"
|
||||
);
|
||||
assert!(
|
||||
!rendered.contains("br:"),
|
||||
"stale ambiguous label:\n{rendered}"
|
||||
);
|
||||
draft.set_branch_mode(WorktreeBranchMode::New);
|
||||
|
||||
draft.focused_field = DraftField::WorktreeToggle;
|
||||
draft.on_input(&InputKey::Enter);
|
||||
let rendered = render_to_string(100, 24, |f| draft.render(f, f.area(), true));
|
||||
|
||||
@@ -176,11 +176,11 @@ export function createSpawnForm(opts: SpawnFormOptions): SpawnFormHandle {
|
||||
</label>
|
||||
</div>
|
||||
<label class="wt-new-wrap">
|
||||
Branch
|
||||
New branch name
|
||||
<input name="worktree_branch" type="text" placeholder="feat/foo" autocomplete="off" />
|
||||
</label>
|
||||
<label class="wt-exist-wrap" hidden>
|
||||
Branch
|
||||
Pick a branch
|
||||
<select class="branch-select"></select>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
@@ -180,6 +180,21 @@ describe("spawnForm worktree defaults and branch picker (#61)", () => {
|
||||
expect(modes.at(-1)).toBe("existing");
|
||||
});
|
||||
|
||||
it("labels the new-branch input and existing-branch picker distinctly (#94)", async () => {
|
||||
const form = await mount();
|
||||
pickProject(form);
|
||||
await drain();
|
||||
|
||||
const newLabel = form.querySelector<HTMLElement>(".wt-new-wrap")!.textContent!.trim();
|
||||
const existLabel = form.querySelector<HTMLElement>(".wt-exist-wrap")!.textContent!.trim();
|
||||
|
||||
expect(newLabel).not.toBe("Branch");
|
||||
expect(existLabel).not.toBe("Branch");
|
||||
expect(newLabel).not.toBe(existLabel);
|
||||
expect(newLabel).toMatch(/name/i);
|
||||
expect(existLabel).toMatch(/pick|choose|select/i);
|
||||
});
|
||||
|
||||
it("collapses the advanced (worktree) section by default (#93)", async () => {
|
||||
const form = await mount();
|
||||
const toggle = form.querySelector<HTMLButtonElement>(".wt-toggle")!;
|
||||
|
||||
Reference in New Issue
Block a user