@@ -16,9 +16,9 @@ func TestPaging_serialize(t *testing.T) {
1616 fields fields
1717 want redis.Args
1818 }{
19- {"default" , fields {0 ,10 }, redis.Args {} },
20- {"0-1000" , fields {0 ,1000 }, redis.Args {"LIMIT" ,0 , 1000 } },
21- {"100-200" , fields {100 ,200 }, redis.Args {"LIMIT" ,100 ,200 } },
19+ {"default" , fields {0 , 10 }, redis.Args {}},
20+ {"0-1000" , fields {0 , 1000 }, redis.Args {"LIMIT" , 0 , 1000 }},
21+ {"100-200" , fields {100 , 200 }, redis.Args {"LIMIT" , 100 , 200 }},
2222 }
2323 for _ , tt := range tests {
2424 t .Run (tt .name , func (t * testing.T ) {
@@ -31,4 +31,70 @@ func TestPaging_serialize(t *testing.T) {
3131 }
3232 })
3333 }
34- }
34+ }
35+
36+ func TestQuery_serialize (t * testing.T ) {
37+ var raw = "test_query"
38+ type fields struct {
39+ Raw string
40+ Flags Flag
41+ InKeys []string
42+ ReturnFields []string
43+ Language string
44+ Expander string
45+ Scorer string
46+ SortBy * SortingKey
47+ HighlightOpts * HighlightOptions
48+ SummarizeOpts * SummaryOptions
49+ }
50+ tests := []struct {
51+ name string
52+ fields fields
53+ want redis.Args
54+ }{
55+ {"default" , fields {Raw : "" }, redis.Args {"" , "LIMIT" , 0 , 0 }},
56+ {"Raw" , fields {Raw : raw }, redis.Args {raw , "LIMIT" , 0 , 0 }},
57+ {"QueryVerbatim" , fields {Raw : raw , Flags : QueryVerbatim }, redis.Args {raw , "LIMIT" , 0 , 0 , "VERBATIM" }},
58+ {"QueryNoContent" , fields {Raw : raw , Flags : QueryNoContent }, redis.Args {raw , "LIMIT" , 0 , 0 , "NOCONTENT" }},
59+ {"QueryInOrder" , fields {Raw : raw , Flags : QueryInOrder }, redis.Args {raw , "LIMIT" , 0 , 0 , "INORDER" }},
60+ {"QueryWithPayloads" , fields {Raw : raw , Flags : QueryWithPayloads }, redis.Args {raw , "LIMIT" , 0 , 0 , "WITHPAYLOADS" }},
61+ {"QueryWithScores" , fields {Raw : raw , Flags : QueryWithScores }, redis.Args {raw , "LIMIT" , 0 , 0 , "WITHSCORES" }},
62+ {"InKeys" , fields {Raw : raw , InKeys : []string {"test_key" }}, redis.Args {raw , "LIMIT" , 0 , 0 , "INKEYS" , 1 , "test_key" }},
63+ {"ReturnFields" , fields {Raw : raw , ReturnFields : []string {"test_field" }}, redis.Args {raw , "LIMIT" , 0 , 0 , "RETURN" , 1 , "test_field" }},
64+ {"Language" , fields {Raw : raw , Language : "chinese" }, redis.Args {raw , "LIMIT" , 0 , 0 , "LANGUAGE" , "chinese" }},
65+ {"Expander" , fields {Raw : raw , Expander : "test_expander" }, redis.Args {raw , "LIMIT" , 0 , 0 , "EXPANDER" , "test_expander" }},
66+ {"Scorer" , fields {Raw : raw , Scorer : "test_scorer" }, redis.Args {raw , "LIMIT" , 0 , 0 , "SCORER" , "test_scorer" }},
67+ {"SortBy" , fields {Raw : raw , SortBy : & SortingKey {
68+ Field : "test_field" ,
69+ Ascending : true }}, redis.Args {raw , "LIMIT" , 0 , 0 , "SORTBY" , "test_field" , "ASC" }},
70+ {"HighlightOpts" , fields {Raw : raw , HighlightOpts : & HighlightOptions {
71+ Fields : []string {"test_field" },
72+ Tags : [2 ]string {"<tag>" , "</tag>" },
73+ }}, redis.Args {raw , "LIMIT" , 0 , 0 , "HIGHLIGHT" , "FIELDS" , 1 , "test_field" , "TAGS" , "<tag>" , "</tag>" }},
74+ {"SummarizeOpts" , fields {Raw : raw , SummarizeOpts : & SummaryOptions {
75+ Fields : []string {"test_field" },
76+ FragmentLen : 20 ,
77+ NumFragments : 3 ,
78+ Separator : "..." ,
79+ }}, redis.Args {raw , "LIMIT" , 0 , 0 , "SUMMARIZE" , "FIELDS" , 1 , "test_field" , "LEN" , 20 , "FRAGS" , 3 , "SEPARATOR" , "..." }},
80+ }
81+ for _ , tt := range tests {
82+ t .Run (tt .name , func (t * testing.T ) {
83+ q := Query {
84+ Raw : tt .fields .Raw ,
85+ Flags : tt .fields .Flags ,
86+ InKeys : tt .fields .InKeys ,
87+ ReturnFields : tt .fields .ReturnFields ,
88+ Language : tt .fields .Language ,
89+ Expander : tt .fields .Expander ,
90+ Scorer : tt .fields .Scorer ,
91+ SortBy : tt .fields .SortBy ,
92+ HighlightOpts : tt .fields .HighlightOpts ,
93+ SummarizeOpts : tt .fields .SummarizeOpts ,
94+ }
95+ if g := q .serialize (); ! reflect .DeepEqual (g , tt .want ) {
96+ t .Errorf ("serialize() = %v, want %v" , g , tt .want )
97+ }
98+ })
99+ }
100+ }
0 commit comments