Complete search section behavior
This commit is contained in:
@@ -43,6 +43,88 @@ func TestUIFiltersUsingVaultModelPathsAndSearch(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestUISearchBehaviorIsConsistentAcrossDesktopAndPhoneLayouts(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
modes := []string{"desktop", "phone"}
|
||||
for _, mode := range modes {
|
||||
mode := mode
|
||||
t.Run(mode, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
u := newUIWithModel(mode, vault.Model{
|
||||
Entries: []vault.Entry{
|
||||
{ID: "entry-1", Title: "Git Server", URL: "https://git.julianfamily.org", Path: []string{"Root", "Internet"}},
|
||||
{ID: "entry-2", Title: "HVAC", URL: "https://climate.example.com", Path: []string{"Root", "Home"}},
|
||||
},
|
||||
Templates: []vault.Entry{
|
||||
{ID: "tpl-1", Title: "Website Login", URL: "https://accounts.example.com", Path: []string{"Templates", "Web"}},
|
||||
{ID: "tpl-2", Title: "SSH Login", URL: "ssh://infra.internal", Path: []string{"Templates", "Infra"}},
|
||||
},
|
||||
RecycleBin: []vault.Entry{
|
||||
{ID: "deleted-1", Title: "Deleted Dynadot", URL: "https://dynadot.example.com", Path: []string{"Root", "Internet"}},
|
||||
{ID: "deleted-2", Title: "Deleted HVAC", URL: "https://climate.example.com", Path: []string{"Root", "Home"}},
|
||||
},
|
||||
})
|
||||
|
||||
u.showEntriesSection()
|
||||
u.currentPath = []string{"Root", "Internet"}
|
||||
u.search.SetText("climate")
|
||||
u.filter()
|
||||
if got := u.filteredTitles(); !slices.Equal(got, []string{"HVAC"}) {
|
||||
t.Fatalf("entries filteredTitles() = %v, want [HVAC]", got)
|
||||
}
|
||||
|
||||
u.showTemplatesSection()
|
||||
u.currentPath = []string{"Templates", "Web"}
|
||||
u.search.SetText("infra")
|
||||
u.filter()
|
||||
if got := u.filteredTitles(); !slices.Equal(got, []string{"SSH Login"}) {
|
||||
t.Fatalf("templates filteredTitles() = %v, want [SSH Login]", got)
|
||||
}
|
||||
if got := u.visiblePathContexts(); !slices.Equal(got, []string{"Templates / Infra"}) {
|
||||
t.Fatalf("templates visiblePathContexts() = %v, want [Templates / Infra]", got)
|
||||
}
|
||||
|
||||
u.showRecycleBinSection()
|
||||
u.search.SetText("climate")
|
||||
u.filter()
|
||||
if got := u.filteredTitles(); !slices.Equal(got, []string{"Deleted HVAC"}) {
|
||||
t.Fatalf("recycle filteredTitles() = %v, want [Deleted HVAC]", got)
|
||||
}
|
||||
if got := u.visiblePathContexts(); !slices.Equal(got, []string{"Recycle Bin / Root / Home"}) {
|
||||
t.Fatalf("recycle visiblePathContexts() = %v, want [Recycle Bin / Root / Home]", got)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestUIClearingSearchResetsToCurrentSectionListing(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
u := newUIWithModel("desktop", vault.Model{
|
||||
Templates: []vault.Entry{
|
||||
{ID: "tpl-1", Title: "Website Login", Path: []string{"Templates", "Web"}},
|
||||
{ID: "tpl-2", Title: "Email Login", Path: []string{"Templates", "Web"}},
|
||||
{ID: "tpl-3", Title: "SSH Login", Path: []string{"Templates", "Infra"}},
|
||||
},
|
||||
})
|
||||
|
||||
u.showTemplatesSection()
|
||||
u.currentPath = []string{"Templates", "Web"}
|
||||
u.search.SetText("ssh")
|
||||
u.filter()
|
||||
if got := u.filteredTitles(); !slices.Equal(got, []string{"SSH Login"}) {
|
||||
t.Fatalf("filteredTitles() with search = %v, want [SSH Login]", got)
|
||||
}
|
||||
|
||||
u.search.SetText("")
|
||||
u.filter()
|
||||
if got := u.filteredTitles(); !slices.Equal(got, []string{"Email Login", "Website Login"}) {
|
||||
t.Fatalf("filteredTitles() after clearing search = %v, want [Email Login Website Login]", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUIChildGroupsComeFromVaultModel(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user