def test_filterset_fields_malformed(self): backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_fields = ['non_existent'] queryset = FilterableItem.objects.all() msg = "'Meta.fields' contains fields that are not defined on this FilterSet: non_existent" with self.assertRaisesMessage(TypeError, msg): backend.get_filterset_class(view, queryset)
def test_filterset_fields_malformed(self): backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_fields = ['non_existent'] queryset = FilterableItem.objects.all() msg = "'Meta.fields' contains fields that are not defined on this FilterSet: non_existent" with self.assertRaisesMessage(TypeError, msg): backend.get_filterset_class(view, queryset)
def test_filterset_fields_malformed(self): backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_fields = ['non_existent'] queryset = FilterableItem.objects.all() msg = "'Meta.fields' must not contain non-model field names: non_existent" with self.assertRaisesMessage(TypeError, msg): backend.get_filterset_class(view, queryset)
def test_filter_class(self): expected = "`View.filter_class` attribute should be renamed `filterset_class`. " \ "See: https://django-filter.readthedocs.io/en/master/guide/migration.html" with warnings.catch_warnings(record=True) as recorded: warnings.simplefilter('always') class View(generics.ListCreateAPIView): filter_class = None view = View() backend = DjangoFilterBackend() backend.get_filterset_class(view, None) message = str(recorded.pop().message) self.assertEqual(message, expected) self.assertEqual(len(recorded), 0)
def test_filterset_fields_no_queryset(self): backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_fields = ['text', 'decimal', 'date'] filterset_class = backend.get_filterset_class(view, None) self.assertIsNone(filterset_class)
def test_filter_class(self): expected = "`View.filter_class` attribute should be renamed `filterset_class`. " \ "See: https://django-filter.readthedocs.io/en/master/guide/migration.html" with warnings.catch_warnings(record=True) as recorded: warnings.simplefilter('always') class View(generics.ListCreateAPIView): filter_class = None view = View() backend = DjangoFilterBackend() backend.get_filterset_class(view, None) message = str(recorded.pop().message) self.assertEqual(message, expected) self.assertEqual(len(recorded), 0)
def test_filterset_fields_no_queryset(self): backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_fields = ['text', 'decimal', 'date'] filterset_class = backend.get_filterset_class(view, None) self.assertIsNone(filterset_class)
def get_django_filter_schema_operation_parameters( self, filter_backend: DjangoFilterBackend) -> typing.List[OpenAPISchema]: queryset = self.get_view_queryset() filterset_class = filter_backend.get_filterset_class( self.view, queryset) if not filterset_class: return [] parameters = [] for field_name, field in filterset_class.base_filters.items(): parameter = { 'name': field_name, 'required': field.extra['required'], 'in': 'query', 'description': self.get_verbose_filter_field_description( filterset_class, field), 'schema': get_filter_schema(filter_field=field, filter_map=self.filter_map), } parameters.append(parameter) return parameters
def test_filterset_fields(self): backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_fields = ['text', 'decimal', 'date'] queryset = FilterableItem.objects.all() filterset_class = backend.get_filterset_class(view, queryset) self.assertEqual(filterset_class._meta.fields, view.filterset_fields)
def test_filterset_fields(self): backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_fields = ['text', 'decimal', 'date'] queryset = FilterableItem.objects.all() filterset_class = backend.get_filterset_class(view, queryset) self.assertEqual(filterset_class._meta.fields, view.filterset_fields)
def test_filterset_class_no_meta(self): class Filter(FilterSet): pass backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_class = Filter queryset = FilterableItem.objects.all() filterset_class = backend.get_filterset_class(view, queryset) self.assertIs(filterset_class, Filter)
def test_filterset_class_no_meta(self): class Filter(FilterSet): pass backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_class = Filter queryset = FilterableItem.objects.all() filterset_class = backend.get_filterset_class(view, queryset) self.assertIs(filterset_class, Filter)
def test_filterset_class_no_queryset(self): class Filter(FilterSet): class Meta: model = FilterableItem fields = '__all__' backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_class = Filter filterset_class = backend.get_filterset_class(view, None) self.assertIs(filterset_class, Filter)
def test_filterset_class_no_queryset(self): class Filter(FilterSet): class Meta: model = FilterableItem fields = '__all__' backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_class = Filter filterset_class = backend.get_filterset_class(view, None) self.assertIs(filterset_class, Filter)
def test_filterset_class(self): class Filter(FilterSet): class Meta: model = FilterableItem fields = '__all__' backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_class = Filter queryset = FilterableItem.objects.all() filterset_class = backend.get_filterset_class(view, queryset) self.assertIs(filterset_class, Filter)
def test_filterset_class(self): class Filter(FilterSet): class Meta: model = FilterableItem fields = '__all__' backend = DjangoFilterBackend() view = FilterableItemView() view.filterset_class = Filter queryset = FilterableItem.objects.all() filterset_class = backend.get_filterset_class(view, queryset) self.assertIs(filterset_class, Filter)