photoprism/pkg/fs/dirs_test.go
Michael Mayer 6847b8b5f9
Complete file browser with symlink support and full folder / file names (#412)
* Backend: Code clean-up

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* File Browser: Show complete, original file and folder names #408

Signed-off-by: Michael Mayer <michael@liquidbytes.net>

* File Browser: Follow symlinks #201 #403 #407

Warning: Following symlinks can make folder lists non-deterministic
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-07-16 15:43:23 +02:00

90 lines
1.9 KiB
Go

package fs
import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestDirs(t *testing.T) {
t.Run("recursive", func(t *testing.T) {
result, err := Dirs("testdata", true, true)
if err != nil {
t.Fatal(err)
}
assert.Contains(t, result, "/directory")
assert.Contains(t, result, "/directory/subdirectory")
assert.Contains(t, result, "/linked")
assert.Contains(t, result, "/linked/photoprism")
assert.Contains(t, result, "/linked/photoprism/sub")
})
t.Run("recursive no-symlinks", func(t *testing.T) {
result, err := Dirs("testdata", true, false)
if err != nil {
t.Fatal(err)
}
assert.Contains(t, result, "/directory")
assert.Contains(t, result, "/directory/subdirectory")
assert.Contains(t, result, "/linked")
})
t.Run("non-recursive", func(t *testing.T) {
result, err := Dirs("testdata", false, true)
if err != nil {
t.Fatal(err)
}
assert.Contains(t, result, "/directory")
assert.Contains(t, result, "/linked")
})
t.Run("non-recursive no-symlinks", func(t *testing.T) {
result, err := Dirs("testdata/directory/subdirectory", false, false)
if err != nil {
t.Fatal(err)
}
assert.Contains(t, result, "/bar")
})
t.Run("non-recursive symlinks", func(t *testing.T) {
result, err := Dirs("testdata/linked", false, true)
if err != nil {
t.Fatal(err)
}
assert.Contains(t, result, "/photoprism")
assert.Contains(t, result, "/self")
})
t.Run("no-result", func(t *testing.T) {
result, err := Dirs("testdata/linked", false, false)
if err != nil {
t.Fatal(err)
}
assert.Empty(t, result)
})
}
func TestFindDirs(t *testing.T) {
t.Run("/directory", func(t *testing.T) {
result := FindDir([]string{"/directory", "/directory/subdirectory", "/linked"})
assert.Equal(t, "", result)
})
t.Run("./testdata", func(t *testing.T) {
result := FindDir([]string{"./testdata"})
assert.True(t, strings.HasSuffix(result, "/pkg/fs/testdata"))
})
}