Merge mature Profile editor with contextual Help
This commit is contained in:
@@ -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")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user