|
7 | 7 |
|
8 | 8 | from rest_framework_json_api import serializers |
9 | 9 | from rest_framework_json_api.utils import ( |
| 10 | + format_error_object, |
10 | 11 | format_field_name, |
11 | 12 | format_field_names, |
12 | 13 | format_link_segment, |
@@ -389,3 +390,45 @@ class SerializerWithoutResourceName(serializers.Serializer): |
389 | 390 | "can not detect 'resource_name' on serializer " |
390 | 391 | "'SerializerWithoutResourceName' in module 'tests.test_utils'" |
391 | 392 | ) |
| 393 | + |
| 394 | + |
| 395 | +@pytest.mark.parametrize( |
| 396 | + "message,pointer,response,result", |
| 397 | + [ |
| 398 | + # Test that pointer does not get overridden in custom error |
| 399 | + ( |
| 400 | + { |
| 401 | + "status": "400", |
| 402 | + "source": { |
| 403 | + "pointer": "/data/custom-pointer", |
| 404 | + }, |
| 405 | + "meta": {"key": "value"}, |
| 406 | + }, |
| 407 | + "/data/default-pointer", |
| 408 | + Response(status.HTTP_400_BAD_REQUEST), |
| 409 | + [ |
| 410 | + { |
| 411 | + "status": "400", |
| 412 | + "source": {"pointer": "/data/custom-pointer"}, |
| 413 | + "meta": {"key": "value"}, |
| 414 | + } |
| 415 | + ], |
| 416 | + ), |
| 417 | + # Test that pointer gets added to custom error |
| 418 | + ( |
| 419 | + { |
| 420 | + "detail": "custom message", |
| 421 | + }, |
| 422 | + "/data/default-pointer", |
| 423 | + Response(status.HTTP_400_BAD_REQUEST), |
| 424 | + [ |
| 425 | + { |
| 426 | + "detail": "custom message", |
| 427 | + "source": {"pointer": "/data/default-pointer"}, |
| 428 | + } |
| 429 | + ], |
| 430 | + ), |
| 431 | + ], |
| 432 | +) |
| 433 | +def test_format_error_object(message, pointer, response, result): |
| 434 | + assert result == format_error_object(message, pointer, response) |
0 commit comments