e22e6c6d37
Only non-sidecar files in the originals folder will be added to the duplicates table to avoid side effects. In addition, the duplicates table is cleaned before and after indexing.
236 lines
No EOL
4.8 KiB
Go
236 lines
No EOL
4.8 KiB
Go
package query
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/photoprism/photoprism/internal/entity"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
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) {
|
|
t.Run("files found", func(t *testing.T) {
|
|
files, err := Files(1000, 0, "/", true)
|
|
|
|
t.Logf("files: %+v", files)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.LessOrEqual(t, 5, len(files))
|
|
})
|
|
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))
|
|
})
|
|
t.Run("search for files path", func(t *testing.T) {
|
|
files, err := Files(1000, 0, "Photos", true)
|
|
|
|
t.Logf("files: %+v", files)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
assert.Empty(t, files)
|
|
})
|
|
}
|
|
|
|
func TestFilesByUID(t *testing.T) {
|
|
t.Run("files found", func(t *testing.T) {
|
|
files, err := FilesByUID([]string{"ft8es39w45bnlqdw"}, 100, 0)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, 1, len(files))
|
|
assert.Equal(t, "exampleFileName.jpg", files[0].FileName)
|
|
})
|
|
t.Run("no files found", func(t *testing.T) {
|
|
files, err := FilesByUID([]string{"ft8es39w45bnlxxx"}, 100, 0)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, 0, len(files))
|
|
})
|
|
}
|
|
|
|
func TestFileByPhotoUID(t *testing.T) {
|
|
t.Run("files found", func(t *testing.T) {
|
|
file, err := FileByPhotoUID("pt9jtdre2lvl0y11")
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, "bridge.jpg", file.FileName)
|
|
})
|
|
|
|
t.Run("no files found", func(t *testing.T) {
|
|
file, err := FileByPhotoUID("111")
|
|
|
|
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) {
|
|
t.Run("files found", func(t *testing.T) {
|
|
file, err := FileByUID("ft8es39w45bnlqdw")
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
assert.Equal(t, "exampleFileName.jpg", file.FileName)
|
|
})
|
|
|
|
t.Run("no files found", func(t *testing.T) {
|
|
file, err := FileByUID("111")
|
|
|
|
if err == nil {
|
|
t.Fatal("error expected")
|
|
}
|
|
|
|
assert.Error(t, err, "record not found")
|
|
t.Log(file)
|
|
})
|
|
}
|
|
|
|
func TestFileByHash(t *testing.T) {
|
|
t.Run("files found", func(t *testing.T) {
|
|
file, err := FileByHash("2cad9168fa6acc5c5c2965ddf6ec465ca42fd818")
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, "exampleFileName.jpg", file.FileName)
|
|
})
|
|
|
|
t.Run("no files found", func(t *testing.T) {
|
|
file, err := FileByHash("111")
|
|
|
|
assert.Error(t, err, "record not found")
|
|
t.Log(file)
|
|
})
|
|
}
|
|
|
|
func TestSetPhotoPrimary(t *testing.T) {
|
|
assert.Equal(t, false, entity.FileFixturesExampleXMP.FilePrimary)
|
|
|
|
err := SetPhotoPrimary("pt9jtdre2lvl0yh7", "ft2es49whhbnlqdn")
|
|
|
|
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)
|
|
}
|
|
} |