Filterset_class не работает при вызове представления из теста
У меня есть вид метода drf:
@action(detail=False, methods=["get"], filterset_class=None)
def count(self, request, *args, **kwargs):
...
и, конечно, есть filterset_class, определенный на уровне класса. Когда я вызываю эту конечную точку из postman, это переопределение filterset_class работает, но когда я вызываю ее из тестов, переопределение не работает. Я использую APIRequestFactory для выполнения запроса из теста, как
factory = APIRequestFactory(email=user.email)
view = NotificationsMessagesView.as_view({"get": "count"})
response = view(request)
result = response.render()
assert result.data["count"] == 1
Мои версии:
Django = "3.2"
djangorestframework = "3.12.4"
django-filter = "22.1"
Может ли кто-нибудь помочь мне? Я пытаюсь найти багрепорты, но ничего не нахожу.
Я думаю, что переопределение filterset_class должно применяться, когда представление запрашивается из тестов.
В вашей тестовой установке отсутствует включение класса filterset в объект request
при прямом вызове представления. Вам необходимо убедиться, что представление правильно инициализируется с необходимым контекстом в APIRequestFactory
factory = APIRequestFactory()
user = User.objects.create_user(email='abc@exp.com')
# Create a request and force authenticate the user
request = factory.get('/endpoint')
force_authenticate(request, user=user) # sets user in request context
view = NotificationsMessagesView.as_view({'get': 'count'})
response = view(request)
result = response.render()
assert result.data["count"] == 1