1
-
2
-
3
1
import json
2
+
4
3
from example .tests import TestBase
4
+
5
5
from django .contrib .auth import get_user_model
6
6
from django .core .urlresolvers import reverse , reverse_lazy
7
7
from django .conf import settings
8
8
9
9
10
10
class ModelViewSetTests (TestBase ):
11
11
"""
12
- Test usage with ModelViewSets
12
+ Test usage with ModelViewSets, also tests pluralization, camelization,
13
+ and underscore.
13
14
14
- [<RegexURLPattern user-list ^user-viewsets/$>, <RegexURLPattern user-detail ^user-viewsets/(?P<pk>[^/]+)/$>]
15
+ [<RegexURLPattern user-list ^user-viewsets/$>,
16
+ <RegexURLPattern user-detail ^user-viewsets/(?P<pk>[^/]+)/$>]
15
17
"""
16
18
list_url = reverse_lazy ('user-list' )
17
19
@@ -21,29 +23,31 @@ def setUp(self):
21
23
22
24
def test_key_in_list_result (self ):
23
25
"""
24
- Ensure the result has a " user" key since that is the name of the model
26
+ Ensure the result has a ' user' key since that is the name of the model
25
27
"""
26
28
response = self .client .get (self .list_url )
27
29
self .assertEqual (response .status_code , 200 )
28
30
29
31
user = get_user_model ().objects .all ()[0 ]
30
- expected = {"user" : [{
31
- 'id' : user .pk ,
32
- 'first_name' : user .first_name ,
33
- 'last_name' : user .last_name ,
34
- 'email' : user .email
35
- }]}
32
+ expected = {
33
+ u'user' : [{
34
+ u'id' : user .pk ,
35
+ u'first_name' : user .first_name ,
36
+ u'last_name' : user .last_name ,
37
+ u'email' : user .email
38
+ }]
39
+ }
36
40
37
41
json_content = json .loads (response .content )
38
- meta = json_content .get (" meta" )
42
+ meta = json_content .get (' meta' )
39
43
40
44
self .assertEquals (expected .get ('user' ), json_content .get ('user' ))
41
45
self .assertEquals (meta .get ('count' , 0 ),
42
46
get_user_model ().objects .count ())
43
- self .assertEquals (meta .get (" next" ), 2 )
47
+ self .assertEquals (meta .get (' next' ), 2 )
44
48
self .assertEqual ('http://testserver/user-viewset/?page=2' ,
45
- meta .get (" next_link" ))
46
- self .assertEqual (meta .get (" page" ), 1 )
49
+ meta .get (' next_link' ))
50
+ self .assertEqual (meta .get (' page' ), 1 )
47
51
48
52
def test_page_two_in_list_result (self ):
49
53
"""
@@ -53,72 +57,75 @@ def test_page_two_in_list_result(self):
53
57
self .assertEqual (response .status_code , 200 )
54
58
55
59
user = get_user_model ().objects .all ()[1 ]
56
- expected = {"user" : [{
57
- 'id' : user .pk ,
58
- 'first_name' : user .first_name ,
59
- 'last_name' : user .last_name ,
60
- 'email' : user .email
61
- }]}
60
+ expected = {
61
+ u'user' : [{
62
+ u'id' : user .pk ,
63
+ u'first_name' : user .first_name ,
64
+ u'last_name' : user .last_name ,
65
+ u'email' : user .email
66
+ }]
67
+ }
62
68
63
69
json_content = json .loads (response .content )
64
- meta = json_content .get (" meta" )
70
+ meta = json_content .get (' meta' )
65
71
66
72
self .assertEquals (expected .get ('user' ), json_content .get ('user' ))
67
73
self .assertEquals (meta .get ('count' , 0 ),
68
74
get_user_model ().objects .count ())
69
- self .assertIsNone (meta .get (" next" ))
70
- self .assertIsNone (meta .get (" next_link" ))
71
- self .assertEqual (meta .get (" previous" ), 1 )
75
+ self .assertIsNone (meta .get (' next' ))
76
+ self .assertIsNone (meta .get (' next_link' ))
77
+ self .assertEqual (meta .get (' previous' ), 1 )
72
78
self .assertEqual ('http://testserver/user-viewset/?page=1' ,
73
- meta .get (" previous_link" ))
74
- self .assertEqual (meta .get (" page" ), 2 )
79
+ meta .get (' previous_link' ))
80
+ self .assertEqual (meta .get (' page' ), 2 )
75
81
76
82
def test_page_range_in_list_result (self ):
77
83
"""
78
- Ensure that the range of a page can be changed from the client.
84
+ Ensure that the range of a page can be changed from the client,
85
+ tests pluralization as two objects means it converts ``user`` to
86
+ ``users``.
79
87
"""
80
88
response = self .client .get (self .list_url , {'page_size' : 2 })
81
89
self .assertEqual (response .status_code , 200 )
82
90
83
91
users = get_user_model ().objects .all ()
84
- expected = {"user" : [
85
- {
86
- 'id' : users [0 ].pk ,
87
- 'first_name' : users [0 ].first_name ,
88
- 'last_name' : users [0 ].last_name ,
89
- 'email' : users [0 ].email
90
- },
91
- {
92
- 'id ' : users [1 ].pk ,
93
- 'first_name ' : users [1 ].first_name ,
94
- 'last_name ' : users [1 ].last_name ,
95
- 'email' : users [ 1 ]. email
96
- }]}
92
+ expected = {
93
+ u'users' : [ {
94
+ u 'id' : users [0 ].pk ,
95
+ u 'first_name' : users [0 ].first_name ,
96
+ u 'last_name' : users [0 ].last_name ,
97
+ u 'email' : users [0 ].email
98
+ },{
99
+ u'id' : users [ 1 ]. pk ,
100
+ u'first_name ' : users [1 ].first_name ,
101
+ u'last_name ' : users [1 ].last_name ,
102
+ u'email ' : users [1 ].email
103
+ }]
104
+ }
97
105
98
106
json_content = json .loads (response .content )
99
- meta = json_content .get (" meta" )
100
- self .assertEquals (expected .get ('user ' ), json_content .get ('user' ))
107
+ meta = json_content .get (' meta' )
108
+ self .assertEquals (expected .get ('users ' ), json_content .get ('user' ))
101
109
self .assertEquals (meta .get ('count' , 0 ),
102
110
get_user_model ().objects .count ())
103
111
104
112
105
113
def test_key_in_detail_result (self ):
106
114
"""
107
- Ensure the result has a " user" key.
115
+ Ensure the result has a ' user' key.
108
116
"""
109
117
response = self .client .get (self .detail_url )
110
118
self .assertEqual (response .status_code , 200 )
111
119
112
120
result = json .loads (response .content )
113
121
expected = {
114
- 'user' : {
115
- 'id' : self .miles .pk ,
116
- 'first_name' : self .miles .first_name ,
117
- 'last_name' : self .miles .last_name ,
118
- 'email' : self .miles .email
122
+ u 'user' : {
123
+ u 'id' : self .miles .pk ,
124
+ u 'first_name' : self .miles .first_name ,
125
+ u 'last_name' : self .miles .last_name ,
126
+ u 'email' : self .miles .email
119
127
}
120
128
}
121
-
122
129
self .assertEqual (result , expected )
123
130
124
131
def test_key_in_post (self ):
@@ -127,11 +134,11 @@ def test_key_in_post(self):
127
134
"""
128
135
self .client .login (username = 'miles' , password = 'pw' )
129
136
data = {
130
- 'user' : {
131
- 'id' : self .miles .pk ,
132
- 'first_name' : self .miles .first_name ,
133
- 'last_name' : self .miles .last_name ,
134
-
137
+ u 'user' : {
138
+ u 'id' : self .miles .pk ,
139
+ u 'first_name' : self .miles .first_name ,
140
+ u 'last_name' : self .miles .last_name ,
141
+
135
142
}
136
143
}
137
144
response = self .client .put (self .detail_url , data = data , format = 'json' )
@@ -145,4 +152,3 @@ def test_key_in_post(self):
145
152
self .assertEqual (
146
153
get_user_model ().objects .get (pk = self .miles .pk ).email ,
147
154
148
-
0 commit comments