9b3efe6872
Signed-off-by: Michael Mayer <michael@photoprism.app>
671 lines
11 KiB
Go
671 lines
11 KiB
Go
package search
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/photoprism/photoprism/internal/form"
|
|
)
|
|
|
|
func TestPhotosFilterType(t *testing.T) {
|
|
t.Run("video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "video"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 3)
|
|
})
|
|
t.Run("raw", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "raw"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 2)
|
|
})
|
|
t.Run("animated", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "animated"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 1)
|
|
})
|
|
t.Run("raw pipe video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "raw|video"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 5)
|
|
})
|
|
t.Run("raw whitespace pipe whitespace video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "raw | video"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 5)
|
|
})
|
|
t.Run("raw or video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "raw or video"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("raw OR video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "raw OR video"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithPercent", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "%gold"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterPercent", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "I love % dog"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithPercent", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "sale%"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithAmpersand", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "&IlikeFood"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterAmpersand", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "Pets & Dogs"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithAmpersand", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "Light&"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithSingleQuote", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "'Family"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterSingleQuote", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "Father's type"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithSingleQuote", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "Ice Cream'"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithAsterisk", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "*Forrest"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterAsterisk", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "My*Kids"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithAsterisk", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "Yoga***"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithPipe", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "|Banana"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterPipe", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "Red|Green"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithPipe", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "Blue|"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithNumber", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "345 Shirt"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterNumber", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "type555 Blue"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithNumber", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Type = "Route 66"
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
}
|
|
|
|
func TestPhotosQueryType(t *testing.T) {
|
|
t.Run("video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"video\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 3)
|
|
})
|
|
t.Run("raw", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"raw\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 2)
|
|
})
|
|
t.Run("animated", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"animated\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 1)
|
|
})
|
|
t.Run("raw pipe video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"raw|video\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 5)
|
|
})
|
|
t.Run("raw whitespace pipe whitespace video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"raw | video\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 5)
|
|
})
|
|
t.Run("raw or video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"raw or video\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("raw OR video", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"raw OR video\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithPercent", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"%gold\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterPercent", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"I love % dog\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithPercent", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"sale%\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithAmpersand", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"&IlikeFood\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterAmpersand", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"Pets & Dogs\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithAmpersand", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"Light&\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithSingleQuote", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"'Family\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterSingleQuote", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"Father's type\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithSingleQuote", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"Ice Cream'\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithAsterisk", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"*Forrest\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterAsterisk", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"My*Kids\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithAsterisk", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"Yoga***\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithPipe", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"|Banana\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterPipe", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"Red|Green\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithPipe", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"Blue|\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("StartsWithNumber", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"345 Shirt\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("CenterNumber", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"type555 Blue\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
t.Run("EndsWithNumber", func(t *testing.T) {
|
|
var f form.SearchPhotos
|
|
|
|
f.Query = "type:\"Route 66\""
|
|
f.Merged = true
|
|
|
|
photos, _, err := Photos(f)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, len(photos), 0)
|
|
})
|
|
}
|