Merge mature Profile editor with contextual Help

This commit is contained in:
proxyctl coordinator
2026-07-18 00:12:54 +08:00
12 changed files with 838 additions and 193 deletions
+49
View File
@@ -1,6 +1,7 @@
package tui
import (
"fmt"
"strings"
"testing"
@@ -333,3 +334,51 @@ func TestCompleteModelFooterHintsMatchContextAndAcceptedKeys(t *testing.T) {
close(updates)
})
}
func TestCompleteModelHelpOverEditorPreservesFieldCursorPreviewAndResizeState(t *testing.T) {
module := &profileManagementModule{}
model := openNewProfileEditor(t, module)
model = updateRunes(model, "office")
model = updateKey(model, "tab")
model = updateRunes(model, "http://proxy.example:8080")
model = updateKey(model, "tab")
items := make([]string, 24)
for i := range items {
items[i] = fmt.Sprintf("host-%02d.example", i)
}
model = updateRunes(model, strings.Join(items, ","))
for range 7 {
model = editorKey(model, tea.KeyLeft)
}
for range 3 {
model = updateKey(model, "pgdown")
}
field := model.form.field
cursor := model.form.inputs[field].input.Position()
previewLine := model.form.bypassPreviewLine
values := make([]string, len(model.form.inputs))
for i := range model.form.inputs {
values[i] = model.form.inputs[i].input.Value()
}
if previewLine == 0 {
t.Fatal("fixture did not scroll the Bypass preview")
}
model = updateKey(model, "?")
model = updateKey(model, "pgdown")
model = resize(model, 60, 16)
model = resize(model, 120, 36)
model = resize(model, 80, 24)
model = updateKey(model, "esc")
if model.page != formPage || model.form.field != field || model.form.inputs[field].input.Position() != cursor || model.form.bypassPreviewLine != previewLine {
t.Fatalf("Help or resize changed editor state: page=%d field=%d cursor=%d preview=%d", model.page, model.form.field, model.form.inputs[field].input.Position(), model.form.bypassPreviewLine)
}
for i := range values {
if got := model.form.inputs[i].input.Value(); got != values[i] {
t.Fatalf("Help or resize changed field %d: got %q want %q", i, got, values[i])
}
}
assertUsableFrame(t, model.View(), 80, 24, "> Bypass [focused]", "PgUp/PgDn: scroll form preview")
}