Files
u-tabs/internal/edit_title_test.go
T
lxy cc58de4661 修复: 重命名时缓存缺条目补建防标题丢失
- 缓存缺 entry(缓存损坏或新会话未入缓存)时补建,标题才能落盘
- 补缓存补建测试,顺带补齐测试文件缺失的换行
2026-10-03 10:13:40 +08:00

102 lines
2.6 KiB
Go

package internal
import "testing"
// TestEditTitleInput 验证编辑标题模式下的按键输入逻辑
func TestEditTitleInput(t *testing.T) {
m := NewModel()
m.history.Projects = []*ProjectDir{
{DirShort: "test", Sessions: []*Session{
{ID: "s1", AISummary: "旧标题"},
}},
}
m.history.DirCursor = 2
m.history.SessCursor = 0
m.history.FocusPanel = 1
m.history.Loaded = true
// 1. 按 e 进入编辑模式
m, _ = m.handleKey("e")
if !m.editTitleMode {
t.Fatal("按 e 应进入编辑模式")
}
if m.editTitleBuf != "旧标题" {
t.Fatalf("编辑缓冲应预填旧标题, got %q", m.editTitleBuf)
}
if m.editTitleCursor != 3 {
t.Fatalf("光标应在末尾, got %d", m.editTitleCursor)
}
// 2. 输入英文 a
m, _ = m.handleKey("a")
if m.editTitleBuf != "旧标题a" {
t.Fatalf("输入 a 应追加, got %q", m.editTitleBuf)
}
if m.editTitleCursor != 4 {
t.Fatalf("输入 a 后光标应在 4, got %d", m.editTitleCursor)
}
// 3. 空格
m, _ = m.handleKey("space")
if m.editTitleBuf != "旧标题a " {
t.Fatalf("空格应插入空格, got %q", m.editTitleBuf)
}
if m.editTitleCursor != 5 {
t.Fatalf("空格后光标应在 5, got %d", m.editTitleCursor)
}
// 4. backspace 删末尾
m, _ = m.handleKey("backspace")
if m.editTitleBuf != "旧标题a" {
t.Fatalf("backspace 应删末尾, got %q", m.editTitleBuf)
}
if m.editTitleCursor != 4 {
t.Fatalf("backspace 后光标应在 4, got %d", m.editTitleCursor)
}
// 5. 输入中文 新
m, _ = m.handleKey("新")
if m.editTitleBuf != "旧标题a新" {
t.Fatalf("输入中文应追加, got %q", m.editTitleBuf)
}
if m.editTitleCursor != 5 {
t.Fatalf("输入中文后光标应在 5, got %d", m.editTitleCursor)
}
// 6. 左移光标
m, _ = m.handleKey("left")
if m.editTitleCursor != 4 {
t.Fatalf("左移后光标应在 4, got %d", m.editTitleCursor)
}
// 7. 在光标处插入
m, _ = m.handleKey("X")
if m.editTitleBuf != "旧标题aX新" {
t.Fatalf("光标处插入 'X' 失败, got %q", m.editTitleBuf)
}
if m.editTitleCursor != 5 {
t.Fatalf("插入后光标应在 5, got %d", m.editTitleCursor)
}
// 8. delete 删除光标处字符
m, _ = m.handleKey("delete")
if m.editTitleBuf != "旧标题aX" {
t.Fatalf("delete 应删光标处字符, got %q", m.editTitleBuf)
}
if m.editTitleCursor != 5 {
t.Fatalf("delete 后光标应在 5, got %d", m.editTitleCursor)
}
// 9. esc 取消
m, _ = m.handleKey("esc")
if m.editTitleMode {
t.Fatal("esc 应退出编辑模式")
}
if m.editTitleBuf != "" {
t.Fatalf("esc 应清空缓冲, got %q", m.editTitleBuf)
}
if m.editTitleCursor != 0 {
t.Fatalf("esc 应重置光标, got %d", m.editTitleCursor)
}
}