From cff6483a8c0ec3d8a61b8e053bf90c7dc6b412a4 Mon Sep 17 00:00:00 2001 From: Tom Bayes Date: Tue, 25 Feb 2025 12:38:21 +0900 Subject: [PATCH] feat: move ftaggregate tests to search_test.go --- .gitignore | 1 + search_commands_test.go | 77 ----------------------------------------- search_test.go | 67 +++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 77 deletions(-) delete mode 100644 search_commands_test.go diff --git a/.gitignore b/.gitignore index f1883206a..a02e55217 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ testdata/* *.tar.gz *.dic redis8tests.sh +.vscode diff --git a/search_commands_test.go b/search_commands_test.go deleted file mode 100644 index ed0aecfe2..000000000 --- a/search_commands_test.go +++ /dev/null @@ -1,77 +0,0 @@ -package redis_test - -import ( - "reflect" - - . "github.com/bsm/ginkgo/v2" - . "github.com/bsm/gomega" - "github.com/redis/go-redis/v9" -) - -var _ = Describe("FTAggregateQuery", func() { - It("returns only the base query when options is nil", func() { - args := redis.FTAggregateQuery("testQuery", nil) - Expect(args).To(Equal(redis.AggregateQuery{"testQuery"})) - }) - - It("includes VERBATIM and SCORER when options are set", func() { - options := &redis.FTAggregateOptions{ - Verbatim: true, - Scorer: "BM25", - } - args := redis.FTAggregateQuery("testQuery", options) - Expect(args[0]).To(Equal("testQuery")) - Expect(args).To(ContainElement("VERBATIM")) - Expect(args).To(ContainElement("SCORER")) - Expect(args).To(ContainElement("BM25")) - }) - - It("includes ADDSCORES when AddScores is true", func() { - options := &redis.FTAggregateOptions{ - AddScores: true, - } - args := redis.FTAggregateQuery("q", options) - Expect(args).To(ContainElement("ADDSCORES")) - }) - - It("includes LOADALL when LoadAll is true", func() { - options := &redis.FTAggregateOptions{ - LoadAll: true, - } - args := redis.FTAggregateQuery("q", options) - Expect(args).To(ContainElement("LOAD")) - Expect(args).To(ContainElement("*")) - }) - - It("includes LOAD when Load is provided", func() { - options := &redis.FTAggregateOptions{ - Load: []redis.FTAggregateLoad{ - {Field: "field1", As: "alias1"}, - {Field: "field2"}, - }, - } - args := redis.FTAggregateQuery("q", options) - // Verify LOAD options related arguments - Expect(args).To(ContainElement("LOAD")) - // Check that field names and aliases are present - Expect(args).To(ContainElement("field1")) - Expect(args).To(ContainElement("alias1")) - Expect(args).To(ContainElement("field2")) - }) - - It("includes TIMEOUT when Timeout > 0", func() { - options := &redis.FTAggregateOptions{ - Timeout: 500, - } - args := redis.FTAggregateQuery("q", options) - Expect(args).To(ContainElement("TIMEOUT")) - found := false - for _, a := range args { - if reflect.DeepEqual(a, 500) { - found = true - break - } - } - Expect(found).To(BeTrue()) - }) -}) diff --git a/search_test.go b/search_test.go index ea3460d3d..2a29526ea 100644 --- a/search_test.go +++ b/search_test.go @@ -3,6 +3,7 @@ package redis_test import ( "context" "fmt" + "reflect" "strconv" "time" @@ -806,6 +807,72 @@ var _ = Describe("RediSearch commands Resp 2", Label("search"), func() { } }) + It("should return only the base query when options is nil", Label("search", "ftaggregate"), func() { + args := redis.FTAggregateQuery("testQuery", nil) + Expect(args).To(Equal(redis.AggregateQuery{"testQuery"})) + }) + + It("should include VERBATIM and SCORER when options are set", Label("search", "ftaggregate"), func() { + options := &redis.FTAggregateOptions{ + Verbatim: true, + Scorer: "BM25", + } + args := redis.FTAggregateQuery("testQuery", options) + Expect(args[0]).To(Equal("testQuery")) + Expect(args).To(ContainElement("VERBATIM")) + Expect(args).To(ContainElement("SCORER")) + Expect(args).To(ContainElement("BM25")) + }) + + It("should include ADDSCORES when AddScores is true", Label("search", "ftaggregate"), func() { + options := &redis.FTAggregateOptions{ + AddScores: true, + } + args := redis.FTAggregateQuery("q", options) + Expect(args).To(ContainElement("ADDSCORES")) + }) + + It("should include LOADALL when LoadAll is true", Label("search", "ftaggregate"), func() { + options := &redis.FTAggregateOptions{ + LoadAll: true, + } + args := redis.FTAggregateQuery("q", options) + Expect(args).To(ContainElement("LOAD")) + Expect(args).To(ContainElement("*")) + }) + + It("should include LOAD when Load is provided", Label("search", "ftaggregate"), func() { + options := &redis.FTAggregateOptions{ + Load: []redis.FTAggregateLoad{ + {Field: "field1", As: "alias1"}, + {Field: "field2"}, + }, + } + args := redis.FTAggregateQuery("q", options) + // Verify LOAD options related arguments + Expect(args).To(ContainElement("LOAD")) + // Check that field names and aliases are present + Expect(args).To(ContainElement("field1")) + Expect(args).To(ContainElement("alias1")) + Expect(args).To(ContainElement("field2")) + }) + + It("should include TIMEOUT when Timeout > 0", Label("search", "ftaggregate"), func() { + options := &redis.FTAggregateOptions{ + Timeout: 500, + } + args := redis.FTAggregateQuery("q", options) + Expect(args).To(ContainElement("TIMEOUT")) + found := false + for _, a := range args { + if reflect.DeepEqual(a, 500) { + found = true + break + } + } + Expect(found).To(BeTrue()) + }) + It("should FTSearch SkipInitialScan", Label("search", "ftsearch"), func() { client.HSet(ctx, "doc1", "foo", "bar")