1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
import unittest
import django
from django.test import TestCase
from rest_framework_filters import utils
from .testapp.models import Person, Note
class LookupsForFieldTests(TestCase):
def test_standard_field(self):
model_field = Person._meta.get_field('name')
lookups = utils.lookups_for_field(model_field)
self.assertIn('exact', lookups)
if django.VERSION >= (1, 9):
self.assertNotIn('year', lookups)
self.assertNotIn('date', lookups)
else:
self.assertIn('year', lookups)
@unittest.skipIf(django.VERSION < (1, 9), "version does not support transformed lookup expressions")
def test_transformed_field(self):
model_field = Person._meta.get_field('datetime_joined')
lookups = utils.lookups_for_field(model_field)
self.assertIn('exact', lookups)
self.assertIn('year__exact', lookups)
self.assertIn('date__year__exact', lookups)
def test_relation_field(self):
# ForeignObject relations are special cased currently
model_field = Note._meta.get_field('author')
lookups = utils.lookups_for_field(model_field)
self.assertIn('exact', lookups)
self.assertIn('in', lookups)
self.assertNotIn('regex', lookups)
@unittest.skipIf(django.VERSION < (1, 9), "version does not support transformed lookup expressions")
class LookupsForTransformTests(TestCase):
def test_recursion_prevention(self):
model_field = Person._meta.get_field('name')
lookups = utils.lookups_for_field(model_field)
self.assertIn('unaccent__exact', lookups)
self.assertNotIn('unaccent__unaccent__exact', lookups)
class ClassLookupsTests(TestCase):
def test_standard_field(self):
model_field = Person._meta.get_field('name')
class_lookups = utils.class_lookups(model_field)
self.assertIn('exact', class_lookups)
if django.VERSION >= (1, 9):
self.assertNotIn('year', class_lookups)
self.assertNotIn('date', class_lookups)
else:
self.assertIn('year', class_lookups)
@unittest.skipIf(django.VERSION < (1, 9), "version does not support transformed lookup expressions")
def test_transformed_field(self):
model_field = Person._meta.get_field('datetime_joined')
class_lookups = utils.class_lookups(model_field)
self.assertIn('exact', class_lookups)
self.assertIn('year', class_lookups)
self.assertIn('date', class_lookups)
|