Add entry history browsing to UI

This commit is contained in:
Joe Julian
2026-03-29 11:20:52 -07:00
parent 8deccced9e
commit cffe05af82
3 changed files with 251 additions and 6 deletions
+77 -1
View File
@@ -710,7 +710,21 @@ func TestUIRestoresSelectedEntryHistoryVersion(t *testing.T) {
u.filter()
u.state.SelectedEntryID = "git-server"
u.loadSelectedEntryIntoEditor()
u.historyIndex.SetText("0")
history := u.visibleHistory()
if len(history) != 1 {
t.Fatalf("len(visibleHistory()) = %d, want 1", len(history))
}
if history[0].Password != "token-1" {
t.Fatalf("visibleHistory()[0].Password = %q, want %q", history[0].Password, "token-1")
}
if err := u.selectHistoryVersion(0); err != nil {
t.Fatalf("selectHistoryVersion(0) error = %v", err)
}
if got := u.historyIndex.Text(); got != "0" {
t.Fatalf("historyIndex.Text() = %q, want %q", got, "0")
}
if err := u.restoreSelectedHistoryAction(); err != nil {
t.Fatalf("restoreSelectedHistoryAction() error = %v", err)
@@ -721,6 +735,68 @@ func TestUIRestoresSelectedEntryHistoryVersion(t *testing.T) {
}
}
func TestUISelectingEntryHistoryVersionTracksSelectedVersion(t *testing.T) {
t.Parallel()
u := newUIWithModel("desktop", vault.Model{
Entries: []vault.Entry{
{
ID: "git-server",
Title: "Git Server",
Username: "joejulian",
Password: "token-2",
URL: "https://git.julianfamily.org",
Path: []string{"Root", "Internet"},
History: []vault.Entry{
{
ID: "git-server-h1",
Title: "Git Server",
Username: "joejulian",
Password: "token-1",
URL: "https://git.julianfamily.org",
Path: []string{"Root", "Internet"},
Notes: "previous token",
},
{
ID: "git-server-h0",
Title: "Git Server",
Username: "joejulian",
Password: "token-0",
URL: "https://git.julianfamily.org",
Path: []string{"Root", "Internet"},
Notes: "oldest token",
},
},
},
},
})
u.showEntriesSection()
u.currentPath = []string{"Root", "Internet"}
u.filter()
u.state.SelectedEntryID = "git-server"
u.loadSelectedEntryIntoEditor()
history := u.visibleHistory()
if len(history) != 2 {
t.Fatalf("len(visibleHistory()) = %d, want 2", len(history))
}
if history[1].Notes != "oldest token" {
t.Fatalf("visibleHistory()[1].Notes = %q, want %q", history[1].Notes, "oldest token")
}
if err := u.selectHistoryVersion(1); err != nil {
t.Fatalf("selectHistoryVersion(1) error = %v", err)
}
selected, ok := u.selectedHistoryEntry()
if !ok {
t.Fatal("selectedHistoryEntry() ok = false, want true")
}
if selected.Password != "token-0" {
t.Fatalf("selectedHistoryEntry().Password = %q, want %q", selected.Password, "token-0")
}
}
func TestUIKeyboardShortcutActionsDispatchExpectedCommands(t *testing.T) {
t.Parallel()