@@ -139,218 +139,107 @@ async def members(address, m):
139
139
140
140
yield member1 , member2 , member3
141
141
142
- # test model class and instantiate FindQuery
143
- # 20 queries / expressions
144
- """
145
- @py_test_mark_asyncio
146
- async def test_find_query1(members, m):
147
- member1, member2, member3 = members
148
- x = m.Member.find()
149
- # print(x.query)
150
- # result is "*"
151
-
152
- @py_test_mark_asyncio
153
- async def test_find_query2(members, m):
154
- member1, member2, member3 = members
155
- x = m.Member.find()
156
- # print(x._query)
157
- # result is "None"
158
-
159
-
160
- @py_test_mark_asyncio
161
- async def test_find_query3(members, m):
162
- member1, member2, member3 = members
163
- fq = FindQuery(expressions=[m.Member.pk >> [member2.pk, member3.pk]], model=m.Member)
164
- # print(fq)
165
- # result is "<aredis_om.model.model.FindQuery object at 0x103b44c40>"
166
-
167
- @py_test_mark_asyncio
168
- async def test_find_query4(members, m):
169
- member1, member2, member3 = members
170
- fq = FindQuery(expressions=[m.Member.pk << [member1.pk, member2.pk, member3.pk]], model=m.Member)
171
- # print(fq.query)
172
- # result is "(@pk:{01J33M1FMX4DHRMX16E4YAYCM3|01J33M1FN087RZVRZP6GN3BZZT|01J33M1FN1JNP0MXBRNANV5C88})"
173
-
174
- @py_test_mark_asyncio
175
- async def test_find_query5(members, m):
176
- member1, member2, member3 = members
177
- fq = FindQuery(expressions=[m.Member.pk << [member1.pk, member2.pk, member3.pk]], model=m.Member)
178
- # print(fq._query)
179
- # result is "None"
180
-
181
- @py_test_mark_asyncio
182
- async def test_find_query6(members, m):
183
- member1, member2, member3 = members
184
- fq = FindQuery(expressions=[m.Member.pk << [member1.pk, member2.pk, member3.pk]], model=m.Member)
185
- # print(fq.command_str_list)
186
- # result is []
187
-
188
- @py_test_mark_asyncio
189
- async def test_find_query7(members, m):
190
- member1, member2, member3 = members
191
- fq = await FindQuery(expressions=[m.Member.pk << [member1.pk, member2.pk, member3.pk]], model=m.Member).all()
192
- # print(fq.query)
193
- # result is AttributeError: 'list' object has no attribute 'query' """
194
-
195
- # added get_query method and optional return_query_args to execute()
196
- # now that we can actually get to the query, let's test what the query is when we add a filter
197
142
198
143
@py_test_mark_asyncio
199
144
async def test_find_query_in (members , m ):
200
145
member1 , member2 , member3 = members
201
146
model_name , fq = await FindQuery (expressions = [m .Member .pk << [member1 .pk , member2 .pk , member3 .pk ]], model = m .Member ).get_query ()
202
- # print(fq)
203
- # result is ['FT.SEARCH', 'redis-om:testing:0.6121599113607783:tests.test_find_query.Member:index', '(@pk:{01J361ZHQQWHN9JTZD2FNX7E2P|01J361ZHQQG62Q2P19KW3CFHET|01J361ZHQQ03HH0WSH4NTM6T95})', 'LIMIT', 0, 1000]
204
147
in_str = "(@pk:{" + str (member1 .pk ) + "|" + str (member2 .pk ) + "|" + str (member3 .pk ) + "})"
205
148
assert fq == ['FT.SEARCH' , model_name , in_str , 'LIMIT' , 0 , 1000 ]
206
149
207
150
@py_test_mark_asyncio
208
151
async def test_find_query_not_in (members , m ):
209
152
member1 , member2 , member3 = members
210
153
model_name , fq = await FindQuery (expressions = [m .Member .pk >> [member2 .pk , member3 .pk ]], model = m .Member ).get_query ()
211
- # print(fq)
212
- # result is ['FT.SEARCH', 'redis-om:testing:0.6121599113607783:tests.test_find_query.Member:index', '-(@pk:{01J361ZHQQG62Q2P19KW3CFHET|01J361ZHQQ03HH0WSH4NTM6T95})', 'LIMIT', 0, 1000]
213
154
not_in_str = "-(@pk:{" + str (member2 .pk ) + "|" + str (member3 .pk ) + "})"
214
155
assert fq == ['FT.SEARCH' , model_name , not_in_str , 'LIMIT' , 0 , 1000 ]
215
156
216
157
@py_test_mark_asyncio
217
158
async def test_find_query_eq (m ):
218
159
model_name , fq = await FindQuery (expressions = [m .Member .first_name == "Andrew" ], model = m .Member ).get_query ()
219
- # print(fq)
220
- # result is ['FT.SEARCH', 'redis-om:testing:0.6121599113607783:tests.test_find_query.Member:index', '@first_name:{Andrew}', 'LIMIT', 0, 1000]
221
160
assert fq == ['FT.SEARCH' , model_name , '@first_name:{Andrew}' , 'LIMIT' , 0 , 1000 ]
222
161
223
162
@py_test_mark_asyncio
224
163
async def test_find_query_ne (m ):
225
164
model_name , fq = await FindQuery (expressions = [m .Member .first_name != "Andrew" ], model = m .Member ).get_query ()
226
- # print(fq)
227
- # result is ['FT.SEARCH', 'redis-om:testing:0.491862029445422:tests.test_find_query.Member:index', '-(@first_name:{Andrew})', 'LIMIT', 0, 1000]
228
165
assert fq == ['FT.SEARCH' , model_name , '-(@first_name:{Andrew})' , 'LIMIT' , 0 , 1000 ]
229
166
230
167
@py_test_mark_asyncio
231
168
async def test_find_query_lt (m ):
232
169
model_name , fq = await FindQuery (expressions = [m .Member .age < 40 ], model = m .Member ).get_query ()
233
- # print(fq)
234
- # result is ['FT.SEARCH', 'redis-om:testing:0.491862029445422:tests.test_find_query.Member:index', '@age:[0 40}', 'LIMIT', 0, 1000]
235
170
assert fq == ['FT.SEARCH' , model_name , '@age:[-inf (40]' , 'LIMIT' , 0 , 1000 ]
236
171
237
172
@py_test_mark_asyncio
238
173
async def test_find_query_le (m ):
239
174
model_name , fq = await FindQuery (expressions = [m .Member .age <= 38 ], model = m .Member ).get_query ()
240
- # print(fq)
241
- # result is ['FT.SEARCH', 'redis-om:testing:0.491862029445422:tests.test_find_query.Member:index', '@age:[0 38]', 'LIMIT', 0, 1000]
242
175
assert fq == ['FT.SEARCH' , model_name , '@age:[-inf 38]' , 'LIMIT' , 0 , 1000 ]
243
176
244
177
@py_test_mark_asyncio
245
178
async def test_find_query_gt (m ):
246
179
model_name , fq = await FindQuery (expressions = [m .Member .age > 38 ], model = m .Member ).get_query ()
247
- # print(fq)
248
- # result is ['FT.SEARCH', 'redis-om:testing:0.491862029445422:tests.test_find_query.Member:index', '@age:[(38 +inf}', 'LIMIT', 0, 1000]
249
180
assert fq == ['FT.SEARCH' , model_name , '@age:[(38 +inf]' , 'LIMIT' , 0 , 1000 ]
250
181
251
182
@py_test_mark_asyncio
252
183
async def test_find_query_ge (m ):
253
184
model_name , fq = await FindQuery (expressions = [m .Member .age >= 38 ], model = m .Member ).get_query ()
254
- # print(fq)
255
- # result is ['FT.SEARCH', 'redis-om:testing:0.491862029445422:tests.test_find_query.Member:index', '@age:[38 +inf]', 'LIMIT', 0, 1000]
256
185
assert fq == ['FT.SEARCH' , model_name , '@age:[38 +inf]' , 'LIMIT' , 0 , 1000 ]
257
186
258
187
@py_test_mark_asyncio
259
188
async def test_find_query_sort (m ):
260
189
model_name , fq = await FindQuery (expressions = [m .Member .age > 0 ], model = m .Member , sort_fields = ["age" ]).get_query ()
261
- # print(fq)
262
- # result is ['FT.SEARCH', 'redis-om:testing:0.491862029445422:tests.test_find_query.Member:index', '@age:[(0 +inf]', 'LIMIT', 0, 1000, 'SORTBY', 'age', 'asc']
263
190
assert fq == ['FT.SEARCH' , model_name , '@age:[(0 +inf]' , 'LIMIT' , 0 , 1000 , 'SORTBY' , 'age' , 'asc' ]
264
191
265
192
@py_test_mark_asyncio
266
193
async def test_find_query_sort_desc (m ):
267
194
model_name , fq = await FindQuery (expressions = [m .Member .age > 0 ], model = m .Member , sort_fields = ["-age" ]).get_query ()
268
- # print(fq)
269
- # result is ['FT.SEARCH', 'redis-om:testing:0.491862029445422:tests.test_find_query.Member:index', '@age:[(0 +inf]', 'LIMIT', 0, 1000, 'SORTBY', 'age', 'desc']
270
195
assert fq == ['FT.SEARCH' , model_name , '@age:[(0 +inf]' , 'LIMIT' , 0 , 1000 , 'SORTBY' , 'age' , 'desc' ]
271
196
272
197
@py_test_mark_asyncio
273
198
async def test_find_query_text_search (m ):
274
199
model_name , fq = await FindQuery (expressions = [m .Member .bio == "test" ], model = m .Member ).get_query ()
275
- # print(fq)
276
- # result is ['FT.SEARCH', 'redis-om:testing:0.491862029445422:tests.test_find_query.Member:index', '@bio:{test}', 'LIMIT', 0, 1000]
277
200
assert fq == ['FT.SEARCH' , model_name , '@bio:{test}' , 'LIMIT' , 0 , 1000 ]
278
201
279
202
@py_test_mark_asyncio
280
203
async def test_find_query_text_search_and (m , members ):
281
204
model_name , fq = await FindQuery (expressions = [m .Member .age < 40 , m .Member .first_name == "Andrew" ], model = m .Member ).get_query ()
282
- # member1, member2, member3 = members
283
- # query = m.Member.find(
284
- # (m.Member.first_name == "Andrew")
285
- # & (m.Member.age < 40)
286
- # )
287
- # assert await query.all() == [member1]
288
-
289
- # res = await m.Member.find((m.Member.age < 40) & (m.Member.first_name == "Andrew")).all()
290
- # print(fq)
291
- # result is ['FT.SEARCH', 'redis-om:testing:0.491862029445422:tests.test_find_query.Member:index', '(@age:[-inf (40]) @first_name:{Andrew}', 'LIMIT', 0, 1000]
292
- # print(res)
293
205
assert fq == ['FT.SEARCH' , model_name , '(@age:[-inf (40]) (@first_name:{Andrew})' , 'LIMIT' , 0 , 1000 ]
294
206
295
207
@py_test_mark_asyncio
296
208
async def test_find_query_text_search_or (m , members ):
297
209
model_name , fq = await FindQuery (expressions = [(m .Member .age < 40 ) | (m .Member .first_name == "Andrew" )], model = m .Member ).get_query ()
298
- # print(fq)
299
- # member1, member2, member3 = members
300
- # query = m.Member.find(
301
- # (m.Member.first_name == "Andrew")
302
- # | (m.Member.age < 40)
303
- # )
304
- # assert await query.all() == [member1, member2, member3]
305
- # result is ['FT.SEARCH', 'redis-om:testing:0.6510151538425774:tests.test_find_query.Member:index', '@bio:{test}', 'LIMIT', 0, 1000]
306
210
assert fq == ['FT.SEARCH' , model_name , '(@age:[-inf (40])| (@first_name:{Andrew})' , 'LIMIT' , 0 , 1000 ]
307
211
308
212
@py_test_mark_asyncio
309
213
async def test_find_query_text_search_not (m ):
310
214
model_name , fq = await FindQuery (expressions = [~ (m .Member .first_name == "Andrew" )], model = m .Member ).get_query ()
311
- # print(fq)
312
- # result is ['FT.SEARCH', 'redis-om:testing:0.6510151538425774:tests.test_find_query.Member:index', '-(@first_name:{Andrew})', 'LIMIT', 0, 1000]
313
215
assert fq == ['FT.SEARCH' , model_name , '-(@first_name:{Andrew})' , 'LIMIT' , 0 , 1000 ]
314
216
315
217
@py_test_mark_asyncio
316
218
async def test_find_query_text_search_not_and (m , members ):
317
219
model_name , fq = await FindQuery (expressions = [~ ((m .Member .first_name == "Andrew" ) & (m .Member .age < 40 ))], model = m .Member ).get_query ()
318
- # print(fq)
319
- # result is ['FT.SEARCH', 'redis-om:testing:0.6510151538425774:tests.test_find_query.Member:index', '-(@age:[-inf (40]) @first_name:{Andrew}', 'LIMIT', 0, 1000]
320
220
assert fq == ['FT.SEARCH' , model_name , '-((@first_name:{Andrew}) (@age:[-inf (40]))' , 'LIMIT' , 0 , 1000 ]
321
221
322
222
@py_test_mark_asyncio
323
223
async def test_find_query_text_search_not_or (m , members ):
324
224
model_name , fq = await FindQuery (expressions = [~ ((m .Member .first_name == "Andrew" ) | (m .Member .age < 40 ))], model = m .Member ).get_query ()
325
- # print(fq)
326
- # result is ['FT.SEARCH', 'redis-om:testing:0.6510151538425774:tests.test_find_query.Member:index', '-(@age:[-inf (40])| (@first_name:{Andrew})', 'LIMIT', 0, 1000]
327
225
assert fq == ['FT.SEARCH' , model_name , '-((@first_name:{Andrew})| (@age:[-inf (40]))' , 'LIMIT' , 0 , 1000 ]
328
226
329
227
@py_test_mark_asyncio
330
228
async def test_find_query_text_search_not_or_and (m , members ):
331
229
model_name , fq = await FindQuery (expressions = [~ (((m .Member .first_name == "Andrew" ) | (m .Member .age < 40 )) & (m .Member .last_name == "Brookins" ))], model = m .Member ).get_query ()
332
- # print(fq)
333
- # result is ['FT.SEARCH', 'redis-om:testing:0.6510151538425774:tests.test_find_query.Member:index', '-((@first_name:{Andrew})| (@age:[-inf (40]) (@last_name:{Brookins}))', 'LIMIT', 0, 1000]
334
230
assert fq == ['FT.SEARCH' , model_name , '-(((@first_name:{Andrew})| (@age:[-inf (40])) (@last_name:{Brookins}))' , 'LIMIT' , 0 , 1000 ]
335
231
336
232
@py_test_mark_asyncio
337
233
async def test_find_query_text_contains (m ):
338
234
model_name , fq = await FindQuery (expressions = [m .Member .first_name .contains ("drew" )], model = m .Member ).get_query ()
339
- # print(fq)
340
- # result is ['FT.SEARCH', 'redis-om:testing:0.6510151538425774:tests.test_find_query.Member:index', '@first_name:{*Andrew*}', 'LIMIT', 0, 1000]
341
235
assert fq == ['FT.SEARCH' , model_name , '(@first_name:{*drew*})' , 'LIMIT' , 0 , 1000 ]
342
236
343
237
@py_test_mark_asyncio
344
238
async def test_find_query_text_startswith (m ):
345
239
model_name , fq = await FindQuery (expressions = [m .Member .first_name .startswith ("An" )], model = m .Member ).get_query ()
346
- # print(fq)
347
- # result is ['FT.SEARCH', 'redis-om:testing:0.6510151538425774:tests.test_find_query.Member:index', '@first_name:{An*}', 'LIMIT', 0, 1000]
348
240
assert fq == ['FT.SEARCH' , model_name , '(@first_name:{An*})' , 'LIMIT' , 0 , 1000 ]
349
241
350
- # test that return_fields limits the fields returned
351
242
@py_test_mark_asyncio
352
- async def test_find_query_return_fields (m ):
353
- model_name , fq = await FindQuery (expressions = [m .Member .first_name == "Andrew" ], model = m .Member , return_fields = ["first_name" ]).get_query ()
354
- # print(fq)
355
- # result is ['FT.SEARCH', 'redis-om:testing:0.6510151538425774:tests.test_find_query.Member:index', '@first_name:{Andrew}', 'LIMIT', 0, 1000, 'RETURN', 1, 'first_name']
356
- # assert fq == ['FT.SEARCH', model_name, '@first_name:{Andrew}', 'LIMIT', 0, 1000, 'RETURN', 1, 'first_name']
243
+ async def test_find_query_text_endswith (m ):
244
+ model_name , fq = await FindQuery (expressions = [m .Member .first_name .endswith ("ew" )], model = m .Member ).get_query ()
245
+ assert fq == ['FT.SEARCH' , model_name , '(@first_name:{*ew})' , 'LIMIT' , 0 , 1000 ]
0 commit comments