@@ -36,19 +36,6 @@ def test_text_filter_exact_match(self):
3636 result = jsonloads (response .content )
3737 self .assertEqual (0 , len (result ['data' ]))
3838
39-
40- @unittest .skipIf (
41- os .environ .get ('BINDER_TEST_MYSQL' , '0' ) != '0' ,
42- "Only available with PostgreSQL"
43- )
44- def test_text_filter_unaccent_chained_qualifier_match (self ):
45- response = self .client .get ('/caretaker/' , data = {'.name:unaccent' : 'Śtefan' })
46-
47- self .assertEqual (response .status_code , 200 )
48-
49- result = jsonloads (response .content )
50- self .assertEqual (0 , len (result ['data' ]))
51-
5239 def test_text_filter_iexact (self ):
5340 response = self .client .get ('/caretaker/' , data = {'.name:iexact' : 'stefan' })
5441
@@ -226,3 +213,248 @@ def test_text_filter_iendswith(self):
226213 self .assertEqual (1 , len (result ['data' ]))
227214 self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
228215
216+ # Unaccent extension tests
217+ @unittest .skipIf (
218+ os .environ .get ('BINDER_TEST_MYSQL' , '0' ) != '0' ,
219+ "Only available with PostgreSQL"
220+ )
221+ def test_text_filter_exact_match_unaccent (self ):
222+ response = self .client .get ('/caretaker/' , data = {'.name:unaccent' : 'Śtefan' })
223+
224+ self .assertEqual (response .status_code , 200 )
225+
226+ result = jsonloads (response .content )
227+ self .assertEqual (1 , len (result ['data' ]))
228+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
229+
230+ response = self .client .get ('/caretaker/' , data = {'.name:unaccent' : 'Śtefa' })
231+
232+ self .assertEqual (response .status_code , 200 )
233+
234+ result = jsonloads (response .content )
235+ self .assertEqual (0 , len (result ['data' ]))
236+
237+ @unittest .skipIf (
238+ os .environ .get ('BINDER_TEST_MYSQL' , '0' ) != '0' ,
239+ "Only available with PostgreSQL"
240+ )
241+ def test_text_filter_iexact_unaccent (self ):
242+ response = self .client .get (
243+ '/caretaker/' , data = {'.name:unaccent:iexact' : 'stęfan' })
244+
245+ self .assertEqual (response .status_code , 200 )
246+
247+ result = jsonloads (response .content )
248+ print (result )
249+ self .assertEqual (1 , len (result ['data' ]))
250+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
251+
252+ response = self .client .get (
253+ '/caretaker/' , data = {'.name:unaccent:iexact' : 'sTĘfaN' })
254+
255+ self .assertEqual (response .status_code , 200 )
256+
257+ result = jsonloads (response .content )
258+ print (result )
259+ self .assertEqual (1 , len (result ['data' ]))
260+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
261+
262+ @unittest .skipIf (
263+ os .environ .get ('BINDER_TEST_MYSQL' , '0' ) != '0' ,
264+ "Only available with PostgreSQL"
265+ )
266+ def test_text_filter_contains (self ):
267+ response = self .client .get (
268+ '/caretaker/' , data = {'.name:unaccent:contains' : 'stęf' })
269+
270+ self .assertEqual (response .status_code , 200 )
271+
272+ result = jsonloads (response .content )
273+ print (result )
274+ self .assertEqual (0 , len (result ['data' ]))
275+
276+ response = self .client .get (
277+ '/caretaker/' , data = {'.name:unaccent:contains' : 'Stęf' })
278+
279+ self .assertEqual (response .status_code , 200 )
280+
281+ result = jsonloads (response .content )
282+ print (result )
283+ self .assertEqual (1 , len (result ['data' ]))
284+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
285+
286+ response = self .client .get (
287+ '/caretaker/' , data = {'.name:unaccent:contains' : 'ę' })
288+
289+ self .assertEqual (response .status_code , 200 )
290+
291+ result = jsonloads (response .content )
292+ print (result )
293+ self .assertEqual (2 , len (result ['data' ]))
294+
295+ @unittest .skipIf (
296+ os .environ .get ('BINDER_TEST_MYSQL' , '0' ) != '0' ,
297+ "Only available with PostgreSQL"
298+ )
299+ def test_text_filter_icontains (self ):
300+ response = self .client .get (
301+ '/caretaker/' , data = {'.name:unaccent:icontains' : 'stęfi' })
302+
303+ self .assertEqual (response .status_code , 200 )
304+
305+ result = jsonloads (response .content )
306+ print (result )
307+ self .assertEqual (0 , len (result ['data' ]))
308+
309+ response = self .client .get (
310+ '/caretaker/' , data = {'.name:unaccent:icontains' : 'sTĘf' })
311+
312+ self .assertEqual (response .status_code , 200 )
313+
314+ result = jsonloads (response .content )
315+ print (result )
316+ self .assertEqual (1 , len (result ['data' ]))
317+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
318+
319+ response = self .client .get (
320+ '/caretaker/' , data = {'.name:unaccent:icontains' : 'Ę' })
321+
322+ self .assertEqual (response .status_code , 200 )
323+
324+ result = jsonloads (response .content )
325+ print (result )
326+ self .assertEqual (2 , len (result ['data' ]))
327+
328+ @unittest .skipIf (
329+ os .environ .get ('BINDER_TEST_MYSQL' , '0' ) != '0' ,
330+ "Only available with PostgreSQL"
331+ )
332+ def test_text_filter_startswith (self ):
333+ response = self .client .get (
334+ '/caretaker/' , data = {'.name:unaccent:startswith' : 'tęf' })
335+
336+ self .assertEqual (response .status_code , 200 )
337+
338+ result = jsonloads (response .content )
339+ print (result )
340+ self .assertEqual (0 , len (result ['data' ]))
341+
342+ response = self .client .get (
343+ '/caretaker/' , data = {'.name:unaccent:startswith' : 'Śtęf' })
344+
345+ self .assertEqual (response .status_code , 200 )
346+
347+ result = jsonloads (response .content )
348+ print (result )
349+ self .assertEqual (1 , len (result ['data' ]))
350+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
351+
352+ response = self .client .get (
353+ '/caretaker/' , data = {'.name:unaccent:startswith' : 'śtę' })
354+
355+ self .assertEqual (response .status_code , 200 )
356+
357+ result = jsonloads (response .content )
358+ print (result )
359+ self .assertEqual (0 , len (result ['data' ]))
360+
361+ @unittest .skipIf (
362+ os .environ .get ('BINDER_TEST_MYSQL' , '0' ) != '0' ,
363+ "Only available with PostgreSQL"
364+ )
365+ def test_text_filter_istartswith (self ):
366+ response = self .client .get (
367+ '/caretaker/' , data = {'.name:unaccent:istartswith' : 'tęf' })
368+
369+ self .assertEqual (response .status_code , 200 )
370+
371+ result = jsonloads (response .content )
372+ print (result )
373+ self .assertEqual (0 , len (result ['data' ]))
374+
375+ response = self .client .get (
376+ '/caretaker/' , data = {'.name:unaccent:istartswith' : 'stęf' })
377+
378+ self .assertEqual (response .status_code , 200 )
379+
380+ result = jsonloads (response .content )
381+ print (result )
382+ self .assertEqual (1 , len (result ['data' ]))
383+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
384+
385+ response = self .client .get (
386+ '/caretaker/' , data = {'.name:unaccent:istartswith' : 'sTĘF' })
387+
388+ self .assertEqual (response .status_code , 200 )
389+
390+ result = jsonloads (response .content )
391+ print (result )
392+ self .assertEqual (1 , len (result ['data' ]))
393+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
394+
395+ @unittest .skipIf (
396+ os .environ .get ('BINDER_TEST_MYSQL' , '0' ) != '0' ,
397+ "Only available with PostgreSQL"
398+ )
399+ def test_text_filter_endswith (self ):
400+ response = self .client .get (
401+ '/caretaker/' , data = {'.name:unaccent:endswith' : 'efą' })
402+
403+ self .assertEqual (response .status_code , 200 )
404+
405+ result = jsonloads (response .content )
406+ print (result )
407+ self .assertEqual (0 , len (result ['data' ]))
408+
409+ response = self .client .get (
410+ '/caretaker/' , data = {'.name:unaccent:endswith' : 'efań' })
411+
412+ self .assertEqual (response .status_code , 200 )
413+
414+ result = jsonloads (response .content )
415+ print (result )
416+ self .assertEqual (1 , len (result ['data' ]))
417+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
418+
419+ response = self .client .get (
420+ '/caretaker/' , data = {'.name:unaccent:endswith' : 'efaŃ' })
421+
422+ self .assertEqual (response .status_code , 200 )
423+
424+ result = jsonloads (response .content )
425+ print (result )
426+ self .assertEqual (0 , len (result ['data' ]))
427+
428+ @unittest .skipIf (
429+ os .environ .get ('BINDER_TEST_MYSQL' , '0' ) != '0' ,
430+ "Only available with PostgreSQL"
431+ )
432+ def test_text_filter_iendswith (self ):
433+ response = self .client .get (
434+ '/caretaker/' , data = {'.name:unaccent:iendswith' : 'ęfa' })
435+
436+ self .assertEqual (response .status_code , 200 )
437+
438+ result = jsonloads (response .content )
439+ print (result )
440+ self .assertEqual (0 , len (result ['data' ]))
441+
442+ response = self .client .get (
443+ '/caretaker/' , data = {'.name:unaccent:iendswith' : 'EfĄn' })
444+
445+ self .assertEqual (response .status_code , 200 )
446+
447+ result = jsonloads (response .content )
448+ print (result )
449+ self .assertEqual (1 , len (result ['data' ]))
450+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
451+
452+ response = self .client .get (
453+ '/caretaker/' , data = {'.name:unaccent:iendswith' : 'efąN' })
454+
455+ self .assertEqual (response .status_code , 200 )
456+
457+ result = jsonloads (response .content )
458+ print (result )
459+ self .assertEqual (1 , len (result ['data' ]))
460+ self .assertEqual ('Stefan' , result ['data' ][0 ]['name' ])
0 commit comments