@@ -181,3 +181,92 @@ def test_import_project_with_extra_fields(self):
181
181
self .assertEqual (project .repo , 'https://github.com/rtfd/template' )
182
182
self .assertNotEqual (project .default_version , 'v1.0' )
183
183
self .assertIn (self .me , project .users .all ())
184
+
185
+ def test_update_project (self ):
186
+ data = {
187
+ 'name' : 'Updated name' ,
188
+ 'repository' : {
189
+ 'url' : 'https://bitbucket.com/rtfd/updated-repository' ,
190
+ 'type' : 'hg' ,
191
+ },
192
+ 'language' : 'es' ,
193
+ 'programming_language' : 'js' ,
194
+ 'homepage' : 'https://updated-homepage.org' ,
195
+ 'default_version' : 'stable' ,
196
+ 'default_branch' : 'updated-default-branch' ,
197
+ 'privacy_level' : 'private' ,
198
+ 'analytics_code' : 'UA-XXXXXX' ,
199
+ 'show_version_warning' : False ,
200
+ 'single_version' : True ,
201
+ }
202
+
203
+ self .client .credentials (HTTP_AUTHORIZATION = f'Token { self .token .key } ' )
204
+ response = self .client .put (
205
+ reverse (
206
+ 'projects-detail' ,
207
+ kwargs = {
208
+ 'project_slug' : self .project .slug ,
209
+ },
210
+ ),
211
+ data ,
212
+ )
213
+ self .assertEqual (response .status_code , 204 )
214
+
215
+ self .project .refresh_from_db ()
216
+ self .assertEqual (self .project .name , 'Updated name' )
217
+ self .assertEqual (self .project .slug , 'project' )
218
+ self .assertEqual (self .project .repo , 'https://bitbucket.com/rtfd/updated-repository' )
219
+ self .assertEqual (self .project .repo_type , 'hg' )
220
+ self .assertEqual (self .project .language , 'es' )
221
+ self .assertEqual (self .project .programming_language , 'js' )
222
+ self .assertEqual (self .project .project_url , 'https://updated-homepage.org' )
223
+ self .assertEqual (self .project .default_version , 'stable' )
224
+ self .assertEqual (self .project .default_branch , 'updated-default-branch' )
225
+ self .assertEqual (self .project .privacy_level , 'private' )
226
+ self .assertEqual (self .project .analytics_code , 'UA-XXXXXX' )
227
+ self .assertEqual (self .project .show_version_warning , False )
228
+ self .assertEqual (self .project .single_version , True )
229
+
230
+ def test_partial_update_project (self ):
231
+ data = {
232
+ 'name' : 'Updated name' ,
233
+ 'repository' : {
234
+ 'url' : 'https://github.com/rtfd/updated-repository' ,
235
+ },
236
+ 'default_branch' : 'updated-default-branch' ,
237
+ }
238
+
239
+ self .client .credentials (HTTP_AUTHORIZATION = f'Token { self .token .key } ' )
240
+ response = self .client .patch (
241
+ reverse (
242
+ 'projects-detail' ,
243
+ kwargs = {
244
+ 'project_slug' : self .project .slug ,
245
+ },
246
+ ),
247
+ data ,
248
+ )
249
+ self .assertEqual (response .status_code , 204 )
250
+
251
+ self .project .refresh_from_db ()
252
+ self .assertEqual (self .project .name , 'Updated name' )
253
+ self .assertEqual (self .project .slug , 'project' )
254
+ self .assertEqual (self .project .repo , 'https://github.com/rtfd/updated-repository' )
255
+ self .assertNotEqual (self .project .default_version , 'updated-default-branch' )
256
+
257
+ def test_partial_update_others_project (self ):
258
+ data = {
259
+ 'name' : 'Updated name' ,
260
+ }
261
+
262
+ self .client .credentials (HTTP_AUTHORIZATION = f'Token { self .token .key } ' )
263
+ response = self .client .patch (
264
+ reverse (
265
+ 'projects-detail' ,
266
+ kwargs = {
267
+ 'project_slug' : self .others_project .slug ,
268
+ },
269
+ ),
270
+ data ,
271
+ )
272
+ self .assertEqual (response .status_code , 403 )
0 commit comments