Tests: Add unit tests for search

This commit is contained in:
theresa 2022-04-20 14:49:18 +02:00
parent bc838fd92d
commit 1f31723095
4 changed files with 692 additions and 0 deletions

View file

@ -450,6 +450,50 @@ func TestParseQueryString(t *testing.T) {
assert.True(t, form.Merged)
})
t.Run("query for landscape with uncommon bool value", func(t *testing.T) {
form := &SearchPhotos{Query: "landscape:test$5123"}
err := form.ParseQueryString()
if err != nil {
t.Fatal(err)
}
assert.True(t, form.Landscape)
})
t.Run("query for square with uncommon bool value", func(t *testing.T) {
form := &SearchPhotos{Query: "square:%abc"}
err := form.ParseQueryString()
if err != nil {
t.Fatal(err)
}
assert.True(t, form.Square)
})
t.Run("query for animated with uncommon bool value", func(t *testing.T) {
form := &SearchPhotos{Query: "animated:%abc"}
err := form.ParseQueryString()
if err != nil {
t.Fatal(err)
}
assert.True(t, form.Animated)
})
t.Run("query for vector with uncommon bool value", func(t *testing.T) {
form := &SearchPhotos{Query: "vector:%abc"}
err := form.ParseQueryString()
if err != nil {
t.Fatal(err)
}
assert.True(t, form.Vector)
})
t.Run("query for lat with invalid type", func(t *testing.T) {
form := &SearchPhotos{Query: "lat:&cat"}

View file

@ -0,0 +1,311 @@
package search
import (
"testing"
"github.com/photoprism/photoprism/internal/form"
"github.com/stretchr/testify/assert"
)
func TestPhotosQueryAnimated(t *testing.T) {
var f0 form.SearchPhotos
f0.Query = "animated:true"
f0.Merged = true
photos0, _, err := Photos(f0)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos0), 1)
t.Run("animated:yes", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:yes"
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithPercent", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"%gold\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterPercent", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"I love % dog\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithPercent", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"sale%\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithAmpersand", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"&IlikeFood\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterAmpersand", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Pets & Dogs\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithAmpersand", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Light&\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithSingleQuote", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"'Family\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterSingleQuote", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Mother's Day\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithSingleQuote", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Ice Cream'\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithAsterisk", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"*Forrest\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterAsterisk", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"My*Kids\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithAsterisk", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Yoga***\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithPipe", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"|Banana\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterPipe", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Red|Green\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithPipe", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Blue|\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithNumber", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"345 Shirt\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterNumber", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Color555 Blue\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithNumber", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Route 66\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("AndSearch", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Route 66 & Father's Day\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("OrSearch", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "animated:\"Route %66 | *Father's Day\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
}

View file

@ -35,6 +35,19 @@ func TestPhotosFilterType(t *testing.T) {
}
assert.Equal(t, len(photos), 1)
})
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
@ -353,6 +366,19 @@ func TestPhotosQueryType(t *testing.T) {
}
assert.Equal(t, len(photos), 1)
})
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

View file

@ -0,0 +1,311 @@
package search
import (
"testing"
"github.com/photoprism/photoprism/internal/form"
"github.com/stretchr/testify/assert"
)
func TestPhotosQueryVector(t *testing.T) {
var f0 form.SearchPhotos
f0.Query = "vector:true"
f0.Merged = true
photos0, _, err := Photos(f0)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos0), 0)
t.Run("animated:yes", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:yes"
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithPercent", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"%gold\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterPercent", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"I love % dog\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithPercent", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"sale%\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithAmpersand", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"&IlikeFood\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterAmpersand", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Pets & Dogs\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithAmpersand", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Light&\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithSingleQuote", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"'Family\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterSingleQuote", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Mother's Day\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithSingleQuote", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Ice Cream'\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithAsterisk", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"*Forrest\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterAsterisk", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"My*Kids\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithAsterisk", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Yoga***\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithPipe", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"|Banana\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterPipe", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Red|Green\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithPipe", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Blue|\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("StartsWithNumber", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"345 Shirt\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("CenterNumber", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Color555 Blue\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("EndsWithNumber", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Route 66\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("AndSearch", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Route 66 & Father's Day\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
t.Run("OrSearch", func(t *testing.T) {
var f form.SearchPhotos
f.Query = "vector:\"Route %66 | *Father's Day\""
f.Merged = true
photos, _, err := Photos(f)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(photos), len(photos0))
})
}