1
1
import pytest
2
- from django .conf .urls import url
3
2
from django .test import override_settings
4
- from django .urls import reverse
3
+ from django .urls import reverse , path
5
4
6
5
from example .models import Blog
7
6
from rest_framework_json_api import serializers
@@ -20,6 +19,7 @@ def validate_data(self, value):
20
19
class CommentSerializer (serializers .Serializer ):
21
20
attachments = CommentAttachmentSerializer (many = True , required = False )
22
21
attachment = CommentAttachmentSerializer (required = False )
22
+ one_more_attachment = CommentAttachmentSerializer (required = False )
23
23
body = serializers .CharField (allow_null = False , required = True )
24
24
25
25
@@ -47,8 +47,8 @@ def post(self, request, *args, **kwargs):
47
47
48
48
49
49
urlpatterns = [
50
- url (r'^entries-nested/$' , DummyTestView .as_view (),
51
- name = 'entries-nested-list' )
50
+ path (r'^entries-nested/$' , DummyTestView .as_view (),
51
+ name = 'entries-nested-list' )
52
52
]
53
53
54
54
@@ -57,7 +57,7 @@ def some_blog(db):
57
57
return Blog .objects .create (name = 'Some Blog' , tagline = "It's a blog" )
58
58
59
59
60
- def perform_error_test (client , data , expected_pointer ):
60
+ def perform_error_test (client , data , expected_pointer , errors_count = 1 ):
61
61
with override_settings (
62
62
JSON_API_SERIALIZE_NESTED_SERIALIZERS_AS_ATTRIBUTE = True ,
63
63
ROOT_URLCONF = __name__
@@ -67,7 +67,7 @@ def perform_error_test(client, data, expected_pointer):
67
67
68
68
errors = response .data
69
69
70
- assert len (errors ) == 1
70
+ assert len (errors ) == errors_count
71
71
assert errors [0 ]['source' ]['pointer' ] == expected_pointer
72
72
73
73
@@ -204,6 +204,26 @@ def test_third_level_dict_error(client, some_blog):
204
204
perform_error_test (client , data , '/data/attributes/comments/0/attachment/data' )
205
205
206
206
207
+ def test_many_third_level_dict_errors (client , some_blog ):
208
+ data = {
209
+ 'data' : {
210
+ 'type' : 'entries' ,
211
+ 'attributes' : {
212
+ 'blog' : some_blog .pk ,
213
+ 'body_text' : 'body_text' ,
214
+ 'headline' : 'headline' ,
215
+ 'comments' : [
216
+ {
217
+ 'attachment' : {}
218
+ }
219
+ ]
220
+ }
221
+ }
222
+ }
223
+
224
+ perform_error_test (client , data , '/data/attributes/comments/0/body' , 2 )
225
+
226
+
207
227
@pytest .mark .filterwarning ('default::DeprecationWarning:rest_framework_json_api.serializers' )
208
228
def test_deprecation_warning (recwarn ):
209
229
class DummyNestedSerializer (serializers .Serializer ):
0 commit comments