photoprism/internal/query/files_test.go

237 lines
4.8 KiB
Go
Raw Normal View History

2020-01-28 19:59:26 +00:00
package query
import (
"testing"
"time"
2020-01-28 19:59:26 +00:00
"github.com/photoprism/photoprism/internal/entity"
"github.com/stretchr/testify/assert"
2020-01-28 19:59:26 +00:00
)
func TestFilesByPath(t *testing.T) {
t.Run("files found", func(t *testing.T) {
files, err := FilesByPath(10, 0, entity.RootOriginals, "2016/11")
t.Logf("files: %+v", files)
if err != nil {
t.Fatal(err)
}
assert.LessOrEqual(t, 1, len(files))
})
t.Run("files found - path starting with /", func(t *testing.T) {
files, err := FilesByPath(10, 0, entity.RootOriginals, "/2016/11")
t.Logf("files: %+v", files)
if err != nil {
t.Fatal(err)
}
assert.LessOrEqual(t, 1, len(files))
})
}
func TestExistingFiles(t *testing.T) {
2020-01-28 19:59:26 +00:00
t.Run("files found", func(t *testing.T) {
files, err := Files(1000, 0, "/", true)
t.Logf("files: %+v", files)
2020-01-28 19:59:26 +00:00
2020-05-13 08:16:12 +00:00
if err != nil {
t.Fatal(err)
}
assert.LessOrEqual(t, 5, len(files))
2020-01-28 19:59:26 +00:00
})
t.Run("files found - includeMissing false", func(t *testing.T) {
files, err := Files(1000, 0, "/", false)
t.Logf("files: %+v", files)
if err != nil {
t.Fatal(err)
}
assert.LessOrEqual(t, 5, len(files))
})
2020-05-13 08:16:12 +00:00
t.Run("search for files path", func(t *testing.T) {
files, err := Files(1000, 0, "Photos", true)
2020-05-13 08:16:12 +00:00
t.Logf("files: %+v", files)
if err != nil {
t.Fatal(err)
}
2020-05-13 08:16:12 +00:00
assert.Empty(t, files)
})
2020-01-28 19:59:26 +00:00
}
func TestFilesByUID(t *testing.T) {
2020-01-28 19:59:26 +00:00
t.Run("files found", func(t *testing.T) {
files, err := FilesByUID([]string{"ft8es39w45bnlqdw"}, 100, 0)
2020-01-28 19:59:26 +00:00
2020-05-13 08:16:12 +00:00
if err != nil {
t.Fatal(err)
}
2020-01-28 19:59:26 +00:00
assert.Equal(t, 1, len(files))
assert.Equal(t, "exampleFileName.jpg", files[0].FileName)
})
2020-05-13 08:16:12 +00:00
t.Run("no files found", func(t *testing.T) {
files, err := FilesByUID([]string{"ft8es39w45bnlxxx"}, 100, 0)
2020-05-13 08:16:12 +00:00
if err != nil {
t.Fatal(err)
}
assert.Equal(t, 0, len(files))
})
2020-01-28 19:59:26 +00:00
}
func TestFileByPhotoUID(t *testing.T) {
2020-01-28 19:59:26 +00:00
t.Run("files found", func(t *testing.T) {
file, err := FileByPhotoUID("pt9jtdre2lvl0y11")
2020-01-28 19:59:26 +00:00
2020-05-13 08:16:12 +00:00
if err != nil {
t.Fatal(err)
}
assert.Equal(t, "bridge.jpg", file.FileName)
2020-01-28 19:59:26 +00:00
})
t.Run("no files found", func(t *testing.T) {
file, err := FileByPhotoUID("111")
2020-01-28 19:59:26 +00:00
assert.Error(t, err, "record not found")
t.Log(file)
})
}
func TestVideoByPhotoUID(t *testing.T) {
t.Run("files found", func(t *testing.T) {
file, err := VideoByPhotoUID("pt9jtdre2lvl0yh0")
if err != nil {
t.Fatal(err)
}
assert.Equal(t, "bridge.mp4", file.FileName)
})
t.Run("no files found", func(t *testing.T) {
file, err := VideoByPhotoUID("111")
assert.Error(t, err, "record not found")
t.Log(file)
})
}
func TestFileByUID(t *testing.T) {
2020-01-28 19:59:26 +00:00
t.Run("files found", func(t *testing.T) {
file, err := FileByUID("ft8es39w45bnlqdw")
2020-01-28 19:59:26 +00:00
if err != nil {
t.Fatal(err)
}
assert.Equal(t, "exampleFileName.jpg", file.FileName)
2020-01-28 19:59:26 +00:00
})
t.Run("no files found", func(t *testing.T) {
file, err := FileByUID("111")
if err == nil {
t.Fatal("error expected")
}
2020-01-28 19:59:26 +00:00
assert.Error(t, err, "record not found")
t.Log(file)
})
}
func TestFileByHash(t *testing.T) {
2020-01-28 19:59:26 +00:00
t.Run("files found", func(t *testing.T) {
file, err := FileByHash("2cad9168fa6acc5c5c2965ddf6ec465ca42fd818")
2020-01-28 19:59:26 +00:00
2020-05-13 08:16:12 +00:00
if err != nil {
t.Fatal(err)
}
2020-01-28 19:59:26 +00:00
assert.Equal(t, "exampleFileName.jpg", file.FileName)
})
t.Run("no files found", func(t *testing.T) {
file, err := FileByHash("111")
2020-01-28 19:59:26 +00:00
assert.Error(t, err, "record not found")
t.Log(file)
})
}
2020-05-13 08:16:12 +00:00
func TestSetPhotoPrimary(t *testing.T) {
assert.Equal(t, false, entity.FileFixturesExampleXMP.FilePrimary)
err := SetPhotoPrimary("pt9jtdre2lvl0yh7", "ft2es49whhbnlqdn")
2020-05-13 08:16:12 +00:00
if err != nil {
t.Fatal(err)
}
//TODO How to assert
//assert.Equal(t, true, entity.FileFixturesExampleXMP.FilePrimary)
}
func TestSetFileError(t *testing.T) {
assert.Equal(t, "", entity.FileFixturesExampleXMP.FileError)
SetFileError("ft2es49whhbnlqdn", "errorFromTest")
//TODO How to assert
//assert.Equal(t, true, entity.FileFixturesExampleXMP.FilePrimary)
}
func TestIndexedFiles(t *testing.T) {
if err := entity.AddDuplicate(
"Photo18.jpg",
entity.RootSidecar,
"3cad9168fa6acc5c5c2965ddf6ec465ca42fd818",
661858,
time.Date(2019, 3, 6, 2, 6, 51, 0, time.UTC).Unix(),
); err != nil {
t.Fatal(err)
}
result, err := IndexedFiles()
if err != nil {
t.Fatal(err)
}
t.Logf("INDEXED FILES: %#v", result)
}
func TestCleanDuplicates(t *testing.T) {
fileName := "hd89e5yhb8p9h.jpg"
if err := entity.AddDuplicate(
fileName,
entity.RootOriginals,
"2cad9168fa6acc5c5c2965ddf6ec465ca42fd811",
661858,
time.Date(2019, 3, 6, 2, 6, 51, 0, time.UTC).Unix(),
); err != nil {
t.Fatal(err)
}
d := &entity.Duplicate{FileName: fileName, FileRoot: entity.RootOriginals}
if err := d.Find(); err != nil {
t.Fatal(err)
}
err := CleanDuplicates()
assert.NoError(t, err)
dp := &entity.Duplicate{FileName: fileName, FileRoot: entity.RootOriginals}
if err := dp.Find(); err == nil {
t.Fatalf("duplicate should be removed: %+v", dp)
}
}