From acc204e4ea6f16f8541eed1e940e9b7e4ebe6ea6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=20V=C3=AEjdea?= Date: Thu, 13 Jun 2019 16:34:23 +0300 Subject: [PATCH] Add test for #382 --- testproj/people/views.py | 6 ++++++ testproj/testproj/inspectors.py | 11 +++++++++++ testproj/testproj/settings/base.py | 7 ++++++- tests/reference.yaml | 5 ++++- 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 testproj/testproj/inspectors.py diff --git a/testproj/people/views.py b/testproj/people/views.py index 2b2daaae..b50a567a 100644 --- a/testproj/people/views.py +++ b/testproj/people/views.py @@ -1,13 +1,19 @@ from rest_framework import viewsets +from rest_framework.pagination import BasePagination from .models import Identity, Person from .serializers import IdentitySerializer, PersonSerializer +class UnknownPagination(BasePagination): + paginator_query_args = ['unknown_paginator'] + + class PersonViewSet(viewsets.ModelViewSet): model = Person queryset = Person.objects serializer_class = PersonSerializer + pagination_class = UnknownPagination class IdentityViewSet(viewsets.ModelViewSet): diff --git a/testproj/testproj/inspectors.py b/testproj/testproj/inspectors.py new file mode 100644 index 00000000..bcd9a0e9 --- /dev/null +++ b/testproj/testproj/inspectors.py @@ -0,0 +1,11 @@ +from drf_yasg import openapi +from drf_yasg.inspectors import PaginatorInspector, NotHandled + + +class UnknownPaginatorInspector(PaginatorInspector): + def get_paginator_parameters(self, paginator): + if hasattr(paginator, 'paginator_query_args'): + return [openapi.Parameter(name=arg, in_=openapi.IN_QUERY, type=openapi.TYPE_STRING) + for arg in getattr(paginator, 'paginator_query_args')] + + return NotHandled diff --git a/testproj/testproj/settings/base.py b/testproj/testproj/settings/base.py index cf1217f1..dcdb830b 100644 --- a/testproj/testproj/settings/base.py +++ b/testproj/testproj/settings/base.py @@ -140,7 +140,12 @@ 'clientId': OAUTH2_CLIENT_ID, 'clientSecret': OAUTH2_CLIENT_SECRET, 'appName': OAUTH2_APP_NAME, - } + }, + "DEFAULT_PAGINATOR_INSPECTORS": [ + 'testproj.inspectors.UnknownPaginatorInspector', + 'drf_yasg.inspectors.DjangoRestResponsePagination', + 'drf_yasg.inspectors.CoreAPICompatInspector', + ] } REDOC_SETTINGS = { diff --git a/tests/reference.yaml b/tests/reference.yaml index 7e78f3ea..6af34753 100644 --- a/tests/reference.yaml +++ b/tests/reference.yaml @@ -276,7 +276,10 @@ paths: get: operationId: people_list description: '' - parameters: [] + parameters: + - name: unknown_paginator + in: query + type: string responses: '200': description: ''