From 46642b3ac02fe944b1290fcbd031a1fead6fe3eb Mon Sep 17 00:00:00 2001 From: graciousgrey Date: Thu, 26 Oct 2023 12:52:39 +0200 Subject: [PATCH] Tests: Add unit tests for search --- internal/search/photos_filter_alt_test.go | 180 ++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 internal/search/photos_filter_alt_test.go diff --git a/internal/search/photos_filter_alt_test.go b/internal/search/photos_filter_alt_test.go new file mode 100644 index 000000000..87edb7347 --- /dev/null +++ b/internal/search/photos_filter_alt_test.go @@ -0,0 +1,180 @@ +package search + +import ( + "testing" + + "github.com/photoprism/photoprism/internal/form" + "github.com/stretchr/testify/assert" +) + +func TestPhotosFilterAlt(t *testing.T) { + t.Run("-10", func(t *testing.T) { + var f form.SearchPhotos + + f.Alt = "-10" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + + for _, r := range photos { + assert.GreaterOrEqual(t, -10, r.PhotoAltitude) + assert.LessOrEqual(t, -10, r.PhotoAltitude) + } + assert.Equal(t, len(photos), 1) + }) + t.Run("-100--5", func(t *testing.T) { + var f form.SearchPhotos + + f.Alt = "-100--5" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + + for _, r := range photos { + assert.GreaterOrEqual(t, -5, r.PhotoAltitude) + assert.LessOrEqual(t, -100, r.PhotoAltitude) + } + + assert.Equal(t, len(photos), 2) + }) + t.Run("200-500", func(t *testing.T) { + var f form.SearchPhotos + + f.Alt = "200-500" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + + for _, r := range photos { + assert.GreaterOrEqual(t, 500, r.PhotoAltitude) + assert.LessOrEqual(t, 200, r.PhotoAltitude) + } + + assert.Equal(t, len(photos), 2) + }) + t.Run("200", func(t *testing.T) { + var f form.SearchPhotos + + f.Alt = "200" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + + assert.Equal(t, len(photos), 1) + }) + t.Run("invalid", func(t *testing.T) { + var f form.SearchPhotos + + f.Alt = "%gold" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + assert.GreaterOrEqual(t, len(photos), 40) + }) +} + +func TestPhotosQueryAlt(t *testing.T) { + t.Run("-10", func(t *testing.T) { + var f form.SearchPhotos + + f.Query = "alt:\"-10\"" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + + for _, r := range photos { + assert.GreaterOrEqual(t, -10, r.PhotoAltitude) + assert.LessOrEqual(t, -10, r.PhotoAltitude) + } + + assert.Equal(t, len(photos), 1) + }) + t.Run("-100--5", func(t *testing.T) { + var f form.SearchPhotos + + f.Query = "alt:\"-100--5\"" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + + for _, r := range photos { + assert.GreaterOrEqual(t, -5, r.PhotoAltitude) + assert.LessOrEqual(t, -100, r.PhotoAltitude) + } + + assert.Equal(t, len(photos), 2) + }) + t.Run("200-500", func(t *testing.T) { + var f form.SearchPhotos + + f.Query = "alt:\"200-500\"" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + + for _, r := range photos { + assert.GreaterOrEqual(t, 500, r.PhotoAltitude) + assert.LessOrEqual(t, 200, r.PhotoAltitude) + } + + assert.Equal(t, len(photos), 2) + }) + t.Run("200", func(t *testing.T) { + var f form.SearchPhotos + + f.Query = "alt:\"200\"" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + assert.Equal(t, len(photos), 1) + }) + t.Run("invalid", func(t *testing.T) { + var f form.SearchPhotos + + f.Query = "alt:\"%gold\"" + f.Merged = true + + photos, _, err := Photos(f) + + if err != nil { + t.Fatal(err) + } + assert.GreaterOrEqual(t, len(photos), 40) + }) +}