@@ -204,6 +204,75 @@ def test_repeat_operation_ids(self):
204
204
assert schema_str .count ("newExample" ) == 1
205
205
assert schema_str .count ("oldExample" ) == 1
206
206
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
+
207
276
208
277
@pytest .mark .skipif (uritemplate is None , reason = 'uritemplate not installed.' )
209
278
@override_settings (REST_FRAMEWORK = {'DEFAULT_SCHEMA_CLASS' : 'rest_framework.schemas.openapi.AutoSchema' })
@@ -267,70 +336,3 @@ def test_schema_construction(self):
267
336
268
337
assert 'openapi' in schema
269
338
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