def test_response_body_nested_serializer(self): path = '/' method = 'POST' class NestedSerializer(serializers.Serializer): number = serializers.IntegerField() class Serializer(serializers.Serializer): text = serializers.CharField() nested = NestedSerializer() class View(generics.GenericAPIView): serializer_class = Serializer view = create_view( View, method, create_request(path), ) inspector = AutoSchema() inspector.view = view responses = inspector._get_responses(path, method) schema = responses['200']['content']['application/json']['schema'] assert sorted(schema['required']) == ['nested', 'text'] assert sorted(list(schema['properties'].keys())) == ['nested', 'text'] assert schema['properties']['nested']['type'] == 'object' assert list(schema['properties']['nested']['properties'].keys()) == ['number'] assert schema['properties']['nested']['required'] == ['number']
def test_operation_id_generation(self): path = '/' method = 'GET' view = create_view( views.ExampleGenericAPIView, method, create_request(path), ) inspector = AutoSchema() inspector.view = view operationId = inspector._get_operation_id(path, method) assert operationId == 'ListExamples'
def test_path_without_parameters(self): path = '/example/' method = 'GET' view = create_view( views.ExampleListView, method, create_request(path) ) inspector = AutoSchema() inspector.view = view operation = inspector.get_operation(path, method) assert operation == { 'operationId': 'ListExamples', 'parameters': [], 'responses': {'200': {'content': {'application/json': {'schema': {}}}}}, }
def test_request_body(self): path = '/' method = 'POST' class Serializer(serializers.Serializer): text = serializers.CharField() read_only = serializers.CharField(read_only=True) class View(generics.GenericAPIView): serializer_class = Serializer view = create_view( View, method, create_request(path) ) inspector = AutoSchema() inspector.view = view request_body = inspector._get_request_body(path, method) assert request_body['content']['application/json']['schema']['required'] == ['text'] assert list(request_body['content']['application/json']['schema']['properties'].keys()) == ['text']
def test_path_with_id_parameter(self): path = '/example/{id}/' method = 'GET' view = create_view( views.ExampleDetailView, method, create_request(path) ) inspector = AutoSchema() inspector.view = view parameters = inspector._get_path_parameters(path, method) assert parameters == [{ 'description': '', 'in': 'path', 'name': 'id', 'required': True, 'schema': { 'type': 'string', }, }]
class ExampleView(generics.DestroyAPIView): schema = AutoSchema(operation_id_base='example')
class RestaurantAPIView(views.ExampleGenericAPIView): schema = AutoSchema(operation_id_base="restaurant") pass