Update as per review and add tests

This commit is contained in:
Liberatys
2021-08-03 22:44:43 +02:00
committed by Jesse Duffield
parent 89ee0a1dee
commit 6b68f4f25d
3 changed files with 80 additions and 23 deletions

View File

@@ -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)
})
}
}