def test_unknown_field_type_error(self): f = NetworkSetting._meta.get_field('mask') with self.assertRaises(AssertionError) as excinfo: FilterSet.filter_for_field(f, 'mask') self.assertIn( "FilterSet resolved field 'mask' with 'exact' lookup " "to an unrecognized field type SubnetMaskField", excinfo.exception.args[0])
def test_field_with_choices(self): f = User._meta.get_field('status') result = FilterSet.filter_for_field(f, 'status') self.assertIsInstance(result, ChoiceFilter) self.assertEqual(result.name, 'status') self.assertTrue('choices' in result.extra) self.assertIsNotNone(result.extra['choices'])
def test_field_with_choices(self): f = User._meta.get_field("status") result = FilterSet.filter_for_field(f, "status") self.assertIsInstance(result, ChoiceFilter) self.assertEqual(result.name, "status") self.assertTrue("choices" in result.extra) self.assertIsNotNone(result.extra["choices"])
def test_filter_for_field_with_extras(self): f = User._meta.get_field('favorite_books') result = FilterSet.filter_for_field(f, 'favorite_books') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, 'favorite_books') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset'])
def test_reverse_m2m_field_with_through_model(self): f = Worker._meta.get_field("employers") result = FilterSet.filter_for_reverse_field(f, "employers") self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, "employers") self.assertTrue("queryset" in result.extra) self.assertIsNotNone(result.extra["queryset"]) self.assertEqual(result.extra["queryset"].model, Business)
def test_reverse_m2m_relationship(self): f = Book._meta.get_field("lovers") result = FilterSet.filter_for_reverse_field(f, "lovers") self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, "lovers") self.assertTrue("queryset" in result.extra) self.assertIsNotNone(result.extra["queryset"]) self.assertEqual(result.extra["queryset"].model, User)
def test_reverse_o2o_relationship(self): f = Account._meta.get_field("profile") result = FilterSet.filter_for_reverse_field(f, "profile") self.assertIsInstance(result, ModelChoiceFilter) self.assertEqual(result.name, "profile") self.assertTrue("queryset" in result.extra) self.assertIsNotNone(result.extra["queryset"]) self.assertEqual(result.extra["queryset"].model, Profile)
def test_non_symmetrical_selfref_m2m_field(self): f = DirectedNode._meta.get_field("outbound_nodes") result = FilterSet.filter_for_field(f, "outbound_nodes") self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, "outbound_nodes") self.assertTrue("queryset" in result.extra) self.assertIsNotNone(result.extra["queryset"]) self.assertEqual(result.extra["queryset"].model, DirectedNode)
def test_field_with_extras(self): f = User._meta.get_field("favorite_books") result = FilterSet.filter_for_field(f, "favorite_books") self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, "favorite_books") self.assertTrue("queryset" in result.extra) self.assertIsNotNone(result.extra["queryset"]) self.assertEqual(result.extra["queryset"].model, Book)
def test_filter_found_for_uuidfield(self): if UUIDTestModel is None: self.assertLess(django.VERSION, (1, 8)) else: f = UUIDTestModel._meta.get_field('uuid') result = FilterSet.filter_for_field(f, 'uuid') self.assertIsInstance(result, UUIDFilter) self.assertEqual(result.name, 'uuid')
def test_reverse_m2m_field_with_through_model(self): f = Worker._meta.get_field('employers') result = FilterSet.filter_for_reverse_field(f, 'employers') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, 'employers') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, Business)
def test_reverse_fk_relationship(self): f = User._meta.get_field_by_name("comments")[0] result = FilterSet.filter_for_reverse_field(f, "comments") self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, "comments") self.assertTrue("queryset" in result.extra) self.assertIsNotNone(result.extra["queryset"]) self.assertEqual(result.extra["queryset"].model, Comment)
def test_reverse_fk_relationship(self): f = User._meta.get_field('comments') result = FilterSet.filter_for_field(f, 'comments') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.field_name, 'comments') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, Comment)
def test_reverse_m2m_relationship(self): f = Book._meta.get_field('lovers') result = FilterSet.filter_for_reverse_field(f, 'lovers') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, 'lovers') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, User)
def test_reverse_m2m_field_with_through_model(self): f = Worker._meta.get_field_by_name('employers')[0] result = FilterSet.filter_for_reverse_field(f, 'employers') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, 'employers') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, Business)
def test_reverse_non_symmetrical_selfref_m2m_field(self): f = DirectedNode._meta.get_field('inbound_nodes') result = FilterSet.filter_for_reverse_field(f, 'inbound_nodes') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, 'inbound_nodes') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, DirectedNode)
def test_reverse_non_symmetrical_selfref_m2m_field(self): f = DirectedNode._meta.get_field_by_name('inbound_nodes')[0] result = FilterSet.filter_for_reverse_field(f, 'inbound_nodes') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, 'inbound_nodes') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, DirectedNode)
def test_reverse_o2o_relationship(self): f = Account._meta.get_field('profile') result = FilterSet.filter_for_reverse_field(f, 'profile') self.assertIsInstance(result, ModelChoiceFilter) self.assertEqual(result.name, 'profile') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, Profile)
def test_field_with_extras(self): f = User._meta.get_field('favorite_books') result = FilterSet.filter_for_field(f, 'favorite_books') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, 'favorite_books') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, Book)
def test_symmetrical_selfref_m2m_field(self): f = Node._meta.get_field('adjacents') result = FilterSet.filter_for_field(f, 'adjacents') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, 'adjacents') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, Node)
def test_reverse_m2m_relationship(self): f = Book._meta.get_field_by_name('lovers')[0] result = FilterSet.filter_for_reverse_field(f, 'lovers') self.assertIsInstance(result, ModelMultipleChoiceFilter) self.assertEqual(result.name, 'lovers') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, User)
def test_reverse_o2o_relationship(self): f = Account._meta.get_field_by_name('profile')[0] result = FilterSet.filter_for_reverse_field(f, 'profile') self.assertIsInstance(result, ModelChoiceFilter) self.assertEqual(result.name, 'profile') self.assertTrue('queryset' in result.extra) self.assertIsNotNone(result.extra['queryset']) self.assertEqual(result.extra['queryset'].model, Profile)
def test_filter_not_found_for_field(self): f = User._meta.get_field('id') result = FilterSet.filter_for_field(f, 'id') self.assertIsNone(result)
def test_filter_found_for_autofield(self): f = User._meta.get_field('id') result = FilterSet.filter_for_field(f, 'id') self.assertIsInstance(result, NumberFilter) self.assertEqual(result.name, 'id')
def test_filter_found_for_uuidfield(self): f = UUIDTestModel._meta.get_field('uuid') result = FilterSet.filter_for_field(f, 'uuid') self.assertIsInstance(result, UUIDFilter) self.assertEqual(result.name, 'uuid')
def test_filter_found_for_field(self): f = User._meta.get_field('username') result = FilterSet.filter_for_field(f, 'username') self.assertIsInstance(result, CharFilter) self.assertEqual(result.name, 'username')
def test_field_that_is_subclassed(self): f = User._meta.get_field('first_name') result = FilterSet.filter_for_field(f, 'first_name') self.assertIsInstance(result, CharFilter)
def test_modified_default_lookup(self): f = User._meta.get_field('username') result = FilterSet.filter_for_field(f, 'username') self.assertIsInstance(result, CharFilter) self.assertEqual(result.lookup_expr, 'icontains')
def test_filter_found_for_uuidfield(self): f = UUIDTestModel._meta.get_field('uuid') result = FilterSet.filter_for_field(f, 'uuid') self.assertIsInstance(result, UUIDFilter) self.assertEqual(result.field_name, 'uuid')
def test_filter_for_ISNULL_lookup(self): f = Article._meta.get_field('author') result, params = FilterSet.filter_for_lookup(f, 'isnull') self.assertEqual(result, BooleanFilter) self.assertDictEqual(params, {})
def test_transformed_lookup_expr(self): f = Comment._meta.get_field('date') result = FilterSet.filter_for_field(f, 'date', 'year__gte') self.assertIsInstance(result, NumberFilter) self.assertEqual(result.name, 'date')
def test_reverse_relationship_lookup_expr(self): f = Book._meta.get_field('lovers') result = FilterSet.filter_for_field(f, 'lovers', 'isnull') self.assertIsInstance(result, BooleanFilter) self.assertEqual(result.field_name, 'lovers') self.assertEqual(result.lookup_expr, 'isnull')
def test_filter_for_RANGE_lookup(self): f = Article._meta.get_field('author') result, params = FilterSet.filter_for_lookup(f, 'range') self.assertTrue(issubclass(result, ModelChoiceFilter)) self.assertTrue(issubclass(result, BaseRangeFilter)) self.assertEqual(params['to_field_name'], 'id')
def test_transformed_lookup_expr(self): f = Comment._meta.get_field('date') result = FilterSet.filter_for_field(f, 'date', 'year__gte') self.assertIsInstance(result, NumberFilter) self.assertEqual(result.field_name, 'date')