diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index 59e0c6d88..ecaf52539 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -474,30 +474,28 @@ func (gui *Gui) handleCommitEditorPress() error { } func (gui *Gui) handleStatusFilterPressed() error { - menuItems := []*menuItem{} - - menuItems = append(menuItems, &menuItem{ - displayString: gui.Tr.FilterStagedFiles, - onPress: func() error { - return gui.setStatusFiltering(filetree.DisplayStaged) + menuItems := []*menuItem{ + { + displayString: gui.Tr.FilterStagedFiles, + onPress: func() error { + return gui.setStatusFiltering(filetree.DisplayStaged) + }, }, - }) - - menuItems = append(menuItems, &menuItem{ - displayString: gui.Tr.FilterUnstagedFiles, - onPress: func() error { - return gui.setStatusFiltering(filetree.DisplayUnstaged) + { + displayString: gui.Tr.FilterUnstagedFiles, + onPress: func() error { + return gui.setStatusFiltering(filetree.DisplayUnstaged) + }, }, - }) - - menuItems = append(menuItems, &menuItem{ - displayString: gui.Tr.ResetCommitFilterState, - onPress: func() error { - return gui.setStatusFiltering(filetree.DisplayAll) + { + displayString: gui.Tr.ResetCommitFilterState, + onPress: func() error { + return gui.setStatusFiltering(filetree.DisplayAll) + }, }, - }) + } - return gui.createMenu(gui.Tr.FilteringMenuTitle, menuItems, createMenuOptions{showCancel: false}) + return gui.createMenu(gui.Tr.FilteringMenuTitle, menuItems, createMenuOptions{showCancel: true }) } func (gui *Gui) setStatusFiltering(filter filetree.FileManagerDisplayFilter) error { diff --git a/pkg/gui/filetree/file_manager_test.go b/pkg/gui/filetree/file_manager_test.go index 2e19e94ea..a365a37b5 100644 --- a/pkg/gui/filetree/file_manager_test.go +++ b/pkg/gui/filetree/file_manager_test.go @@ -93,3 +93,62 @@ func TestRender(t *testing.T) { }) } } + +func TestFilterAction(t *testing.T) { + scenarios := []struct { + name string + filter FileManagerDisplayFilter + files []*models.File + expected []*models.File + }{ + { + name: "filter files with unstaged changes", + filter: DisplayUnstaged, + files: []*models.File{ + &models.File{Name: "dir2/dir2/file4", ShortStatus: "M ", HasUnstagedChanges: true}, + &models.File{Name: "dir2/file5", ShortStatus: "M ", HasStagedChanges: true}, + &models.File{Name: "file1", ShortStatus: "M ", HasUnstagedChanges: true}, + }, + expected: []*models.File{ + &models.File{Name: "dir2/dir2/file4", ShortStatus: "M ", HasUnstagedChanges: true}, + &models.File{Name: "file1", ShortStatus: "M ", HasUnstagedChanges: true}, + }, + }, + { + name: "filter files with staged changes", + filter: DisplayStaged, + files: []*models.File{ + &models.File{Name: "dir2/dir2/file4", ShortStatus: "M ", HasStagedChanges: true}, + &models.File{Name: "dir2/file5", ShortStatus: "M ", HasStagedChanges: false}, + &models.File{Name: "file1", ShortStatus: "M ", HasStagedChanges: true}, + }, + expected: []*models.File{ + &models.File{Name: "dir2/dir2/file4", ShortStatus: "M ", HasStagedChanges: true}, + &models.File{Name: "file1", ShortStatus: "M ", HasStagedChanges: true}, + }, + }, + { + name: "filter all files", + filter: DisplayAll, + files: []*models.File{ + &models.File{Name: "dir2/dir2/file4", ShortStatus: "M ", HasUnstagedChanges: true}, + &models.File{Name: "dir2/file5", ShortStatus: "M ", HasUnstagedChanges: true}, + &models.File{Name: "file1", ShortStatus: "M ", HasUnstagedChanges: true}, + }, + expected: []*models.File{ + &models.File{Name: "dir2/dir2/file4", ShortStatus: "M ", HasUnstagedChanges: true}, + &models.File{Name: "dir2/file5", ShortStatus: "M ", HasUnstagedChanges: true}, + &models.File{Name: "file1", ShortStatus: "M ", HasUnstagedChanges: true}, + }, + }, + } + + for _, s := range scenarios { + s := s + t.Run(s.name, func(t *testing.T) { + mngr := &FileManager{files: s.files, filter: s.filter} + result := mngr.GetFilesForDisplay() + assert.EqualValues(t, s.expected, result) + }) + } +} diff --git a/pkg/i18n/polish.go b/pkg/i18n/polish.go index 4668bd2f8..92891d920 100644 --- a/pkg/i18n/polish.go +++ b/pkg/i18n/polish.go @@ -38,9 +38,9 @@ func polishTranslationSet() TranslationSet { LcAbortMerge: "o scalaniu", LcResolveMergeConflicts: "rozwiąż konflikty scalania", LcCommitFileFilter: "Filtrowanie plików commitować", - FilterStagedFiles: "Show only staged files", - FilterUnstagedFiles: "Show only unstaged files", - ResetCommitFilterState: "Reset commit file state filter", + FilterStagedFiles: "Pokaż tylko pliki etapowe", + FilterUnstagedFiles: "Pokaż tylko niestageowane pliki", + ResetCommitFilterState: "Resetuj filtr stanu pliku commit", LcCheckout: "przełącz", NoChangedFiles: "Brak zmienionych plików", FileHasNoUnstagedChanges: "Plik nie zawiera żadnych nieopublikowanych zmian do dodania",