Skip to content

Commit 1b66d1b

Browse files
committed
Move serializer field introspection tests to correct test case.
From SchemaGenerator tests to Operation Introspection.
1 parent de26af4 commit 1b66d1b

File tree

1 file changed

+69
-67
lines changed

1 file changed

+69
-67
lines changed

tests/schemas/test_openapi.py

Lines changed: 69 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,75 @@ def test_repeat_operation_ids(self):
204204
assert schema_str.count("newExample") == 1
205205
assert schema_str.count("oldExample") == 1
206206

207+
def test_serializer_datefield(self):
208+
path = '/'
209+
method = 'GET'
210+
view = create_view(
211+
views.ExampleGenericAPIView,
212+
method,
213+
create_request(path),
214+
)
215+
inspector = AutoSchema()
216+
inspector.view = view
217+
218+
responses = inspector._get_responses(path, method)
219+
response_schema = responses['200']['content']['application/json']['schema']['properties']
220+
assert response_schema['date']['type'] == response_schema['datetime']['type'] == 'string'
221+
assert response_schema['date']['format'] == 'date'
222+
assert response_schema['datetime']['format'] == 'date-time'
223+
224+
def test_serializer_validators(self):
225+
path = '/'
226+
method = 'GET'
227+
view = create_view(
228+
views.ExampleValdidatedAPIView,
229+
method,
230+
create_request(path),
231+
)
232+
inspector = AutoSchema()
233+
inspector.view = view
234+
235+
responses = inspector._get_responses(path, method)
236+
response_schema = responses['200']['content']['application/json']['schema']['properties']
237+
238+
assert response_schema['integer']['type'] == 'integer'
239+
assert response_schema['integer']['maximum'] == 99
240+
assert response_schema['integer']['minimum'] == -11
241+
242+
assert response_schema['string']['minLength'] == 2
243+
assert response_schema['string']['maxLength'] == 10
244+
245+
assert response_schema['regex']['pattern'] == r'[ABC]12{3}'
246+
assert response_schema['regex']['description'] == 'must have an A, B, or C followed by 1222'
247+
248+
assert response_schema['decimal1']['type'] == 'number'
249+
assert response_schema['decimal1']['multipleOf'] == .01
250+
assert response_schema['decimal1']['maximum'] == 10000
251+
assert response_schema['decimal1']['minimum'] == -10000
252+
253+
assert response_schema['decimal2']['type'] == 'number'
254+
assert response_schema['decimal2']['multipleOf'] == .0001
255+
256+
assert response_schema['email']['type'] == 'string'
257+
assert response_schema['email']['format'] == 'email'
258+
assert response_schema['email']['default'] == '[email protected]'
259+
260+
assert response_schema['url']['type'] == 'string'
261+
assert response_schema['url']['nullable'] is True
262+
assert response_schema['url']['default'] == 'http://www.example.com'
263+
264+
assert response_schema['uuid']['type'] == 'string'
265+
assert response_schema['uuid']['format'] == 'uuid'
266+
267+
assert response_schema['ip4']['type'] == 'string'
268+
assert response_schema['ip4']['format'] == 'ipv4'
269+
270+
assert response_schema['ip6']['type'] == 'string'
271+
assert response_schema['ip6']['format'] == 'ipv6'
272+
273+
assert response_schema['ip']['type'] == 'string'
274+
assert 'format' not in response_schema['ip']
275+
207276

208277
@pytest.mark.skipif(uritemplate is None, reason='uritemplate not installed.')
209278
@override_settings(REST_FRAMEWORK={'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.openapi.AutoSchema'})
@@ -267,70 +336,3 @@ def test_schema_construction(self):
267336

268337
assert 'openapi' in schema
269338
assert 'paths' in schema
270-
271-
def test_serializer_datefield(self):
272-
patterns = [
273-
url(r'^example/?$', views.ExampleGenericViewSet.as_view({"get": "get"})),
274-
]
275-
generator = SchemaGenerator(patterns=patterns)
276-
277-
request = create_request('/')
278-
schema = generator.get_schema(request=request)
279-
280-
response = schema['paths']['/example/']['get']['responses']
281-
response_schema = response['200']['content']['application/json']['schema']['properties']
282-
283-
assert response_schema['date']['type'] == response_schema['datetime']['type'] == 'string'
284-
285-
assert response_schema['date']['format'] == 'date'
286-
assert response_schema['datetime']['format'] == 'date-time'
287-
288-
def test_serializer_validators(self):
289-
patterns = [
290-
url(r'^example/?$', views.ExampleValdidatedAPIView.as_view()),
291-
]
292-
generator = SchemaGenerator(patterns=patterns)
293-
294-
request = create_request('/')
295-
schema = generator.get_schema(request=request)
296-
297-
response = schema['paths']['/example/']['get']['responses']
298-
response_schema = response['200']['content']['application/json']['schema']['properties']
299-
300-
assert response_schema['integer']['type'] == 'integer'
301-
assert response_schema['integer']['maximum'] == 99
302-
assert response_schema['integer']['minimum'] == -11
303-
304-
assert response_schema['string']['minLength'] == 2
305-
assert response_schema['string']['maxLength'] == 10
306-
307-
assert response_schema['regex']['pattern'] == r'[ABC]12{3}'
308-
assert response_schema['regex']['description'] == 'must have an A, B, or C followed by 1222'
309-
310-
assert response_schema['decimal1']['type'] == 'number'
311-
assert response_schema['decimal1']['multipleOf'] == .01
312-
assert response_schema['decimal1']['maximum'] == 10000
313-
assert response_schema['decimal1']['minimum'] == -10000
314-
315-
assert response_schema['decimal2']['type'] == 'number'
316-
assert response_schema['decimal2']['multipleOf'] == .0001
317-
318-
assert response_schema['email']['type'] == 'string'
319-
assert response_schema['email']['format'] == 'email'
320-
assert response_schema['email']['default'] == '[email protected]'
321-
322-
assert response_schema['url']['type'] == 'string'
323-
assert response_schema['url']['nullable'] is True
324-
assert response_schema['url']['default'] == 'http://www.example.com'
325-
326-
assert response_schema['uuid']['type'] == 'string'
327-
assert response_schema['uuid']['format'] == 'uuid'
328-
329-
assert response_schema['ip4']['type'] == 'string'
330-
assert response_schema['ip4']['format'] == 'ipv4'
331-
332-
assert response_schema['ip6']['type'] == 'string'
333-
assert response_schema['ip6']['format'] == 'ipv6'
334-
335-
assert response_schema['ip']['type'] == 'string'
336-
assert 'format' not in response_schema['ip']

0 commit comments

Comments
 (0)