Add task sidebar workflow
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/hjbdev/patterm/internal/preset"
|
||||
"github.com/hjbdev/patterm/internal/task"
|
||||
)
|
||||
|
||||
// makeFakeChild builds a Child with just enough state for the palette
|
||||
@@ -83,6 +84,54 @@ func TestContextItemsProcess(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFocusedTaskShowsTaskActions(t *testing.T) {
|
||||
agent := &preset.Preset{Name: "codex", Kind: preset.KindAgent, Argv: []string{"codex"}}
|
||||
taskList := []task.Task{{ID: "task_1", Title: "Fix sidebar"}}
|
||||
p := newPaletteWithTasks(nil, "", "", "task_1", taskList, preset.Set{Agents: []*preset.Preset{agent}})
|
||||
if got := p.focusedSubject(); got != "task: Fix sidebar" {
|
||||
t.Fatalf("focused subject = %q", got)
|
||||
}
|
||||
if _, it := findItem(p, "task-rename-form"); it == nil || it.action.taskID != "task_1" {
|
||||
t.Fatalf("task rename missing or wrong: %+v", it)
|
||||
}
|
||||
if _, it := findItem(p, "task-start-agent"); it == nil || it.action.taskID != "task_1" || it.action.preset != agent {
|
||||
t.Fatalf("task start-agent missing or wrong: %+v", it)
|
||||
}
|
||||
if i, _ := findItem(p, "spawn-agent"); i < 0 {
|
||||
t.Fatalf("normal unscoped spawn-agent row should remain available")
|
||||
}
|
||||
}
|
||||
|
||||
func TestTaskCreateFormSubmitsTitle(t *testing.T) {
|
||||
p := newPaletteWithTasks(nil, "", "", "", []task.Task{}, preset.Set{})
|
||||
idx, _ := findItem(p, "task-create-form")
|
||||
if idx < 0 {
|
||||
t.Fatalf("task-create-form missing")
|
||||
}
|
||||
p.cursor = idx
|
||||
_, done, _ := p.handleInput([]byte("\r"), 0)
|
||||
if done || p.mode != paletteModeRenameForm || p.renameForm == nil || p.renameForm.subject != "task-create" {
|
||||
t.Fatalf("create task did not open name form: done=%v form=%+v", done, p.renameForm)
|
||||
}
|
||||
for _, b := range []byte("New task") {
|
||||
_, _, _ = p.handleInput([]byte{b}, 0)
|
||||
}
|
||||
action, done, _ := p.handleInput([]byte("\r"), 0)
|
||||
if !done || action.kind != "task-create-submit" || action.newName != "New task" {
|
||||
t.Fatalf("submit = %+v done=%v", action, done)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTaskBoundChildShowsOpenTask(t *testing.T) {
|
||||
c := makeFakeChild("aid", "codex", KindAgent)
|
||||
c.TaskID = "task_1"
|
||||
taskList := []task.Task{{ID: "task_1", Title: "Fix sidebar"}}
|
||||
p := newPaletteWithTasks([]*Child{c}, "aid", "", "", taskList, preset.Set{})
|
||||
if _, it := findItem(p, "task-switch"); it == nil || it.action.taskID != "task_1" {
|
||||
t.Fatalf("task-switch missing for task-bound child: %+v", it)
|
||||
}
|
||||
}
|
||||
|
||||
func TestContextItemsTerminalUsesCloseNotStop(t *testing.T) {
|
||||
c := makeFakeChild("tid", "terminal", KindTerminal)
|
||||
p := newPalette([]*Child{c}, "tid", "", preset.Set{})
|
||||
|
||||
Reference in New Issue
Block a user