23 test_title = "bleh_title" |
23 test_title = "bleh_title" |
24 data = {"title": test_title} |
24 data = {"title": test_title} |
25 post_response = self.client.post(post_url, data, format="json") |
25 post_response = self.client.post(post_url, data, format="json") |
26 self.test_workspace_guid = json.loads(post_response.content.decode()).get("id") |
26 self.test_workspace_guid = json.loads(post_response.content.decode()).get("id") |
27 self.first_test_title = "test_title_1" |
27 self.first_test_title = "test_title_1" |
28 self.first_test_content = json.dumps({ |
28 self.first_test_content_dict = { |
29 "id": "", |
29 "id": "", |
30 "title": "test_title_1", |
30 "title": "test_title_1", |
31 "description": "test_description_1", |
31 "description": "test_description_1", |
32 "created": "", |
32 "created": "2016-03-11 15:10:10.645193+00:00", |
33 "updated": "", |
33 "updated": "2016-03-11 15:10:10.645193+00:00", |
34 "edges": [], |
34 "edges": [], |
35 "nodes": [], |
35 "nodes": [], |
36 "users": [], |
36 "users": [], |
37 "space_id": "", |
37 "space_id": "", |
38 "views": [] |
38 "views": [] |
39 }) |
39 } |
40 self.second_test_title = "test_title_1" |
40 self.first_test_content = json.dumps(self.first_test_content_dict) |
41 self.second_test_content = json.dumps({ |
41 self.second_test_title = "test_title_2" |
|
42 self.second_test_content_dict = { |
42 "id": "", |
43 "id": "", |
43 "title": "test_title_2", |
44 "title": "test_title_2", |
44 "description": "test_description_2", |
45 "description": "test_description_2", |
45 "created": "", |
46 "created": "2016-03-11 15:10:10.645193+00:00", |
46 "updated": "", |
47 "updated": "2016-03-12 15:10:10.645193+00:00", |
47 "edges": [], |
48 "edges": [], |
48 "nodes": [], |
49 "nodes": [], |
49 "users": [], |
50 "users": [], |
50 "space_id": "", |
51 "space_id": "", |
51 "views": [] |
52 "views": [] |
52 }) |
53 } |
53 self.third_test_title = "test_title_1" |
54 self.second_test_content = json.dumps(self.second_test_content_dict) |
54 self.third_test_content = json.dumps({ |
55 self.third_test_title = "test_title_3" |
|
56 self.third_test_content_dict = { |
55 "id": "", |
57 "id": "", |
56 "title": "test_title_3", |
58 "title": "test_title_3", |
57 "description": "test_description_3", |
59 "description": "test_description_3", |
58 "created": "", |
60 "created": "2016-03-11 15:10:10.645193+00:00", |
59 "updated": "", |
61 "updated": "2016-03-13 15:10:10.645193+00:00", |
60 "edges": [], |
62 "edges": [], |
61 "nodes": [], |
63 "nodes": [], |
62 "users": [], |
64 "users": [], |
63 "space_id": "", |
65 "space_id": "", |
64 "views": [] |
66 "views": [] |
65 }) |
67 } |
|
68 self.third_test_content = json.dumps(self.third_test_content_dict) |
66 |
69 |
67 def test_create_renkan(self): |
70 def test_create_renkan(self): |
68 |
71 |
69 ################################################### |
72 ################################################### |
70 # POSTing new Renkan |
73 # POSTing new Renkan |
78 self.assertEqual(Renkan.objects.count(), 1) |
81 self.assertEqual(Renkan.objects.count(), 1) |
79 self.assertEqual(Revision.objects.count(), 1) |
82 self.assertEqual(Revision.objects.count(), 1) |
80 |
83 |
81 # Checking POSTed Renkan data |
84 # Checking POSTed Renkan data |
82 post_response_dict = json.loads(post_response.content.decode()) |
85 post_response_dict = json.loads(post_response.content.decode()) |
|
86 post_response_content_dict = json.loads(post_response_dict.get("content", "{}")) |
83 new_renkan_guid = post_response_dict.get("id", "") |
87 new_renkan_guid = post_response_dict.get("id", "") |
84 new_renkan = Renkan.objects.get(renkan_guid=new_renkan_guid) |
88 new_renkan = Renkan.objects.get(renkan_guid=new_renkan_guid) |
85 # GUIDs and username |
89 # GUIDs and username |
86 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("created_by", "")) |
90 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("created_by", "")) |
87 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("last_updated_by", "")) |
91 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("last_updated_by", "")) |
88 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan.creator, User.USERNAME_FIELD)) |
92 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan.creator, User.USERNAME_FIELD)) |
89 # Content and title extracted from revision |
93 # Content and title extracted from revision |
90 self.assertEqual(new_renkan.title, self.first_test_title) |
94 self.assertEqual(new_renkan.title, self.first_test_title) |
91 self.assertEqual(new_renkan.content, self.first_test_content) |
95 new_renkan_content_dict = json.loads(new_renkan.content) |
|
96 for key in list(self.first_test_content_dict.keys()) + list(set(new_renkan_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
97 if key != "updated" and key != "created" and key != "id": |
|
98 self.assertEqual(new_renkan_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
|
99 |
92 # Revision count |
100 # Revision count |
93 self.assertEqual(new_renkan.revision_count, 1) |
101 self.assertEqual(new_renkan.revision_count, 1) |
94 self.assertEqual(post_response_dict.get("revision_count", ""), 1) |
102 self.assertEqual(post_response_dict.get("revision_count", ""), 1) |
95 |
103 |
96 # Checking POSTed Renkan revision data |
104 # Checking POSTed Renkan revision data |
100 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan_revision.creator, User.USERNAME_FIELD)) |
108 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan_revision.creator, User.USERNAME_FIELD)) |
101 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan_revision.last_updated_by, User.USERNAME_FIELD)) |
109 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan_revision.last_updated_by, User.USERNAME_FIELD)) |
102 # Title and content |
110 # Title and content |
103 # in the response |
111 # in the response |
104 self.assertEqual(post_response_dict.get("title", ""), self.first_test_title) |
112 self.assertEqual(post_response_dict.get("title", ""), self.first_test_title) |
105 self.assertEqual(post_response_dict.get("content", ""), self.first_test_content) |
113 for key in list(self.first_test_content_dict.keys()) + list(set(post_response_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
114 if key != "updated" and key != "created" and key != "id": |
|
115 self.assertEqual(post_response_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
|
116 |
106 # in the database |
117 # in the database |
107 self.assertEqual(new_renkan_revision.title, self.first_test_title) |
118 self.assertEqual(new_renkan_revision.title, self.first_test_title) |
108 self.assertEqual(new_renkan_revision.content, self.first_test_content) |
119 new_revision_content_dict = json.loads(new_renkan_revision.content) |
|
120 for key in list(self.first_test_content_dict.keys()) + list(set(new_revision_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
121 if key != "updated" and key != "created" and key != "id": |
|
122 self.assertEqual(new_revision_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
109 |
123 |
110 # Checking permission |
124 # Checking permission |
111 self.assertTrue(self.user.has_perm("view_renkan", new_renkan)) |
125 self.assertTrue(self.user.has_perm("view_renkan", new_renkan)) |
112 |
126 |
113 ################################################### |
127 ################################################### |
126 post_response_dict = json.loads(post_response.content.decode()) |
140 post_response_dict = json.loads(post_response.content.decode()) |
127 new_renkan_guid = post_response_dict.get("id", "") |
141 new_renkan_guid = post_response_dict.get("id", "") |
128 new_renkan = Renkan.objects.get(renkan_guid=new_renkan_guid) |
142 new_renkan = Renkan.objects.get(renkan_guid=new_renkan_guid) |
129 # GUIDs and username |
143 # GUIDs and username |
130 self.assertEqual(self.test_workspace_guid, post_response_dict.get("workspace_id", "")) |
144 self.assertEqual(self.test_workspace_guid, post_response_dict.get("workspace_id", "")) |
131 self.assertEqual(self.test_workspace_guid, new_renkan.workspace_guid) |
145 self.assertEqual(self.test_workspace_guid, new_renkan.workspace.workspace_guid) |
132 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("created_by", "")) |
146 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("created_by", "")) |
133 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("last_updated_by", "")) |
147 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), post_response_dict.get("last_updated_by", "")) |
134 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan.creator, User.USERNAME_FIELD)) |
148 self.assertEqual(getattr(self.user, User.USERNAME_FIELD), getattr(new_renkan.creator, User.USERNAME_FIELD)) |
135 # Content and title extracted from revision |
149 # Content and title extracted from revision |
136 self.assertEqual(new_renkan.title, self.second_test_title) |
150 self.assertEqual(new_renkan.title, self.second_test_title) |
137 self.assertEqual(new_renkan.content, self.second_test_content) |
151 new_renkan_content_dict = json.loads(new_renkan.content) |
|
152 for key in list(self.second_test_content_dict.keys()) + list(set(new_renkan_content_dict.keys()) - set(self.second_test_content_dict.keys())): |
|
153 if key != "updated" and key != "created" and key != "id" and key != "space_id": |
|
154 self.assertEqual(new_renkan_content_dict.get(key, ""), self.second_test_content_dict.get(key, "")) |
|
155 |
138 # Revision count |
156 # Revision count |
139 self.assertEqual(new_renkan.revision_count, 1) |
157 self.assertEqual(new_renkan.revision_count, 1) |
140 self.assertEqual(post_response_dict.get("revision_count", ""), 1) |
158 self.assertEqual(post_response_dict.get("revision_count", ""), 1) |
141 |
159 |
142 ################################################### |
160 ################################################### |
157 post_url = reverse("v1.0:renkan_list_workspace", kwargs={"workspace_guid": "bleh-bad-workspace-guid"}) |
175 post_url = reverse("v1.0:renkan_list_workspace", kwargs={"workspace_guid": "bleh-bad-workspace-guid"}) |
158 data = {"title": self.third_test_title, "content": self.third_test_content} |
176 data = {"title": self.third_test_title, "content": self.third_test_content} |
159 |
177 |
160 post_response = self.client.post(post_url, data, format="json") |
178 post_response = self.client.post(post_url, data, format="json") |
161 self.assertEqual(post_response.status_code, status.HTTP_404_NOT_FOUND) |
179 self.assertEqual(post_response.status_code, status.HTTP_404_NOT_FOUND) |
|
180 |
|
181 ################################################### |
|
182 # POSTing with non-JSON serializable content |
|
183 ################################################### |
|
184 |
|
185 post_url = reverse("v1.0:renkan_list") |
|
186 data = {"title": self.third_test_title, "content": "notJson(Serializable}"} |
|
187 |
|
188 post_response = self.client.post(post_url, data, format="json") |
|
189 self.assertEqual(post_response.status_code, status.HTTP_400_BAD_REQUEST) |
162 |
190 |
163 ################################################### |
191 ################################################### |
164 # try POSTing with unauthorized user |
192 # try POSTing with unauthorized user |
165 ################################################### |
193 ################################################### |
166 |
194 |
268 |
299 |
269 post_url = reverse("v1.0:renkan_list") |
300 post_url = reverse("v1.0:renkan_list") |
270 data = {} |
301 data = {} |
271 post_response = self.client.post(post_url, data, format="json") |
302 post_response = self.client.post(post_url, data, format="json") |
272 post_response_dict = json.loads(post_response.content.decode()) |
303 post_response_dict = json.loads(post_response.content.decode()) |
|
304 post_response_ts = json.loads(post_response_dict.get("content"), "{}").get("updated", "") |
273 renkan_guid = post_response_dict.get("id", "") |
305 renkan_guid = post_response_dict.get("id", "") |
274 revision_guid = post_response_dict.get("current_revision_id", "") |
306 revision_guid = post_response_dict.get("current_revision_id", "") |
275 |
307 |
276 ################################################### |
308 ################################################### |
277 # PUTting by updating current revision |
309 # PUTting by updating current revision |
278 ################################################### |
310 ################################################### |
279 |
311 |
280 put_url = reverse("v1.0:renkan_detail", kwargs={"renkan_guid": renkan_guid}) |
312 put_url = reverse("v1.0:renkan_detail", kwargs={"renkan_guid": renkan_guid}) |
|
313 put_content_dict = json.loads(self.first_test_content) |
|
314 put_content_dict["updated"] = post_response_ts |
281 put_data = { |
315 put_data = { |
282 "title" : self.first_test_title, |
316 "title" : self.first_test_title, |
283 "content" : self.first_test_content, |
317 "content" : json.dumps(put_content_dict), |
284 "create_new_revision": False |
318 "create_new_revision": False |
285 } |
319 } |
286 put_response = self.client.put(put_url, put_data, format="json") |
320 put_response = self.client.put(put_url, put_data, format="json") |
287 self.assertEqual(put_response.status_code, status.HTTP_200_OK) |
321 self.assertEqual(put_response.status_code, status.HTTP_200_OK) |
288 put_response_dict = json.loads(put_response.content.decode()) |
322 put_response_dict = json.loads(put_response.content.decode()) |
|
323 put_response_content_dict = json.loads(put_response_dict.get("content", "{}")) |
|
324 put_response_ts = put_response_content_dict.get("updated", "") |
|
325 |
289 # checking we"re still on the same revision as the initial one |
326 # checking we"re still on the same revision as the initial one |
290 updated_project = Renkan.objects.get(renkan_guid=renkan_guid) |
327 updated_project = Renkan.objects.get(renkan_guid=renkan_guid) |
291 self.assertEqual(revision_guid, put_response_dict.get("current_revision_id", "")) |
328 self.assertEqual(revision_guid, put_response_dict.get("current_revision_id", "")) |
292 self.assertEqual(put_response_dict.get("revision_count", ""), 1) |
329 self.assertEqual(put_response_dict.get("revision_count", ""), 1) |
293 self.assertEqual(updated_project.revision_count, 1) |
330 self.assertEqual(updated_project.revision_count, 1) |
294 |
331 |
295 self.assertEqual(revision_guid, updated_project.current_revision_guid) |
332 self.assertEqual(revision_guid, updated_project.current_revision.revision_guid) |
296 # checking data was updated |
333 # checking data was updated |
297 # in the reponse |
334 # in the reponse |
298 self.assertEqual(put_response_dict.get("title", ""), self.first_test_title) |
335 self.assertEqual(put_response_dict.get("title", ""), self.first_test_title) |
299 self.assertEqual(put_response_dict.get("content", ""), self.first_test_content) |
336 for key in list(self.first_test_content_dict.keys()) + list(set(put_response_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
337 if key != "updated" and key!= "id" and key != "space_id": |
|
338 self.assertEqual(put_response_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
|
339 |
300 # in the database |
340 # in the database |
301 updated_revision = Revision.objects.get(revision_guid=revision_guid) |
341 updated_revision = Revision.objects.get(revision_guid=revision_guid) |
|
342 updated_revision_content_dict = json.loads(updated_revision.content) |
302 self.assertEqual(updated_revision.title, self.first_test_title) |
343 self.assertEqual(updated_revision.title, self.first_test_title) |
303 self.assertEqual(updated_revision.content, self.first_test_content) |
344 for key in list(self.first_test_content_dict.keys()) + list(set(updated_revision_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
345 if key != "updated" and key!= "id" and key != "space_id": |
|
346 self.assertEqual(updated_revision_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
304 |
347 |
305 ################################################### |
348 ################################################### |
306 # PUTting by creating a new revision |
349 # PUTting by creating a new revision |
307 ################################################### |
350 ################################################### |
308 |
351 |
|
352 put_content_dict = json.loads(self.second_test_content) |
|
353 put_content_dict["updated"] = put_response_ts |
309 put_data = { |
354 put_data = { |
310 "title" : self.second_test_title, |
355 "title" : self.second_test_title, |
311 "content" : self.second_test_content, |
356 "content" : json.dumps(put_content_dict), |
312 "create_new_revision": True |
357 "create_new_revision": True |
313 } |
358 } |
314 put_response = self.client.put(put_url, put_data, format="json") |
359 put_response = self.client.put(put_url, put_data, format="json") |
315 self.assertEqual(put_response.status_code, status.HTTP_200_OK) |
360 self.assertEqual(put_response.status_code, status.HTTP_200_OK) |
316 put_response_dict = json.loads(put_response.content.decode()) |
361 put_response_dict = json.loads(put_response.content.decode()) |
|
362 put_response_content_dict = json.loads(put_response_dict.get("content", "{}")) |
|
363 put_response_ts = put_response_content_dict.get("updated", "") |
317 |
364 |
318 # checking we created a new revision |
365 # checking we created a new revision |
319 updated_project = Renkan.objects.get(renkan_guid=renkan_guid) |
366 updated_project = Renkan.objects.get(renkan_guid=renkan_guid) |
320 created_revision_guid = put_response_dict.get("current_revision_id", "") |
367 created_revision_guid = put_response_dict.get("current_revision_id", "") |
321 self.assertNotEqual(created_revision_guid, revision_guid) |
368 self.assertNotEqual(created_revision_guid, revision_guid) |
323 self.assertEqual(Revision.objects.count(), 2) |
370 self.assertEqual(Revision.objects.count(), 2) |
324 self.assertEqual(put_response_dict.get("revision_count", ""), 2) |
371 self.assertEqual(put_response_dict.get("revision_count", ""), 2) |
325 self.assertEqual(updated_project.revision_count, 2) |
372 self.assertEqual(updated_project.revision_count, 2) |
326 |
373 |
327 # checking project now points towards new revision |
374 # checking project now points towards new revision |
328 self.assertEqual(updated_project.current_revision_guid, created_revision_guid) |
375 self.assertEqual(updated_project.current_revision.revision_guid, created_revision_guid) |
329 # checking data was updated |
376 # checking data was updated |
330 # in the reponse |
377 # in the reponse |
331 self.assertEqual(put_response_dict.get("title", ""), self.second_test_title) |
378 self.assertEqual(put_response_dict.get("title", ""), self.second_test_title) |
332 self.assertEqual(put_response_dict.get("content", ""), self.second_test_content) |
379 for key in list(self.second_test_content_dict.keys()) + list(set(put_response_content_dict.keys()) - set(self.second_test_content_dict.keys())): |
|
380 if key != "updated" and key!= "id" and key != "space_id": |
|
381 self.assertEqual(put_response_content_dict.get(key, ""), self.second_test_content_dict.get(key, "")) |
333 # in the database |
382 # in the database |
334 updated_revision = Revision.objects.get(revision_guid=created_revision_guid) |
383 updated_revision = Revision.objects.get(revision_guid=created_revision_guid) |
|
384 updated_revision_content_dict = json.loads(updated_revision.content) |
335 self.assertEqual(updated_revision.title, self.second_test_title) |
385 self.assertEqual(updated_revision.title, self.second_test_title) |
336 self.assertEqual(updated_revision.content, self.second_test_content) |
386 for key in list(self.second_test_content_dict.keys()) + list(set(updated_revision_content_dict.keys()) - set(self.second_test_content_dict.keys())): |
|
387 if key != "updated" and key!= "id" and key != "space_id": |
|
388 self.assertEqual(updated_revision_content_dict.get(key, ""), self.second_test_content_dict.get(key, "")) |
337 |
389 |
338 ################################################### |
390 ################################################### |
339 # try to update source_revision_guid or workspace_guid |
391 # try to update source_revision_guid or workspace_guid |
340 ################################################### |
392 ################################################### |
341 |
393 |
342 put_data = { |
394 put_data = { |
343 "title" : self.third_test_title, |
395 "title" : self.third_test_title, |
344 "content" : self.third_test_content, |
396 "content" : self.third_test_content, |
345 "workspace_id": "bleh-workspace-guid" # should fail without even checking the id |
397 "workspace_id": "bleh-workspace-guid" # should fail without even checking the id |
346 } |
|
347 put_response = self.client.put(put_url, put_data, format="json") |
|
348 self.assertEqual(put_response.status_code, status.HTTP_400_BAD_REQUEST) |
|
349 |
|
350 put_data = { |
|
351 "title" : self.third_test_title, |
|
352 "content" : self.third_test_content, |
|
353 "source_revision_id" : "bleh-revision-guid" # should fail without even checking the id |
|
354 } |
398 } |
355 put_response = self.client.put(put_url, put_data, format="json") |
399 put_response = self.client.put(put_url, put_data, format="json") |
356 self.assertEqual(put_response.status_code, status.HTTP_400_BAD_REQUEST) |
400 self.assertEqual(put_response.status_code, status.HTTP_400_BAD_REQUEST) |
357 |
401 |
358 ################################################### |
402 ################################################### |
396 |
440 |
397 first_copy_data = {"title": "new_title_copy_1"} |
441 first_copy_data = {"title": "new_title_copy_1"} |
398 first_copy_url = post_url+"?source_renkan_id="+source_renkan_guid |
442 first_copy_url = post_url+"?source_renkan_id="+source_renkan_guid |
399 first_copy_response = self.client.post(first_copy_url, first_copy_data, format="json") |
443 first_copy_response = self.client.post(first_copy_url, first_copy_data, format="json") |
400 first_copy_response_dict = json.loads(first_copy_response.content.decode()) |
444 first_copy_response_dict = json.loads(first_copy_response.content.decode()) |
|
445 first_copy_response_content_dict = json.loads(first_copy_response_dict.get("content", "{}")) |
401 self.assertEqual(first_copy_response.status_code, status.HTTP_201_CREATED) |
446 self.assertEqual(first_copy_response.status_code, status.HTTP_201_CREATED) |
402 self.assertEqual(Renkan.objects.count(), 2) |
447 self.assertEqual(Renkan.objects.count(), 2) |
403 # Checking data |
448 # Checking data |
404 # in the response |
449 # in the response |
405 self.assertNotEqual(first_copy_response_dict.get("id"), source_renkan_guid) |
450 self.assertNotEqual(first_copy_response_dict.get("id"), source_renkan_guid) |
406 self.assertEqual(first_copy_response_dict.get("source_revision_id"), source_revision_guid) |
451 self.assertEqual(first_copy_response_dict.get("source_revision_id"), source_revision_guid) |
407 self.assertEqual(first_copy_response_dict.get("title", ""), "new_title_copy_1") |
452 self.assertEqual(first_copy_response_dict.get("title", ""), "new_title_copy_1") |
408 self.assertEqual(first_copy_response_dict.get("content", ""), self.first_test_content) |
453 for key in list(self.first_test_content_dict.keys()) + list(set(first_copy_response_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
454 if key != "updated" and key != "created" and key !="title" and key!= "id" and key != "space_id": |
|
455 self.assertEqual(first_copy_response_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
409 self.assertEqual(first_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
456 self.assertEqual(first_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
410 self.assertEqual(first_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
457 self.assertEqual(first_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
411 # in the database |
458 # in the database |
412 first_copy = Renkan.objects.get(renkan_guid=first_copy_response_dict.get("id", "")) |
459 first_copy = Renkan.objects.get(renkan_guid=first_copy_response_dict.get("id", "")) |
413 first_copy_revision = Revision.objects.get(revision_guid=first_copy_response_dict.get("current_revision_id", "")) |
460 first_copy_revision = Revision.objects.get(revision_guid=first_copy_response_dict.get("current_revision_id", "")) |
414 self.assertEqual(first_copy.title, "new_title_copy_1") |
461 self.assertEqual(first_copy.title, "new_title_copy_1") |
415 self.assertEqual(first_copy.content, self.first_test_content) |
|
416 self.assertEqual(first_copy_revision.title, "new_title_copy_1") |
462 self.assertEqual(first_copy_revision.title, "new_title_copy_1") |
417 self.assertEqual(first_copy_revision.content, self.first_test_content) |
463 first_copy_revision_content_dict = json.loads(first_copy_revision.content) |
|
464 for key in list(self.first_test_content_dict.keys()) + list(set(first_copy_revision_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
465 if key != "updated" and key != "created" and key!= "id" and key != "space_id": |
|
466 self.assertEqual(first_copy_revision_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
418 self.assertEqual(getattr(first_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
467 self.assertEqual(getattr(first_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
419 self.assertEqual(getattr(first_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
468 self.assertEqual(getattr(first_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
420 self.assertEqual(getattr(first_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
469 self.assertEqual(getattr(first_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
421 |
470 |
422 ################################################### |
471 ################################################### |
425 |
474 |
426 second_copy_data = {"source_renkan_id": source_renkan_guid, "title": "new_title_copy_2"} |
475 second_copy_data = {"source_renkan_id": source_renkan_guid, "title": "new_title_copy_2"} |
427 second_copy_url = post_url |
476 second_copy_url = post_url |
428 second_copy_response = self.client.post(second_copy_url, second_copy_data, format="json") |
477 second_copy_response = self.client.post(second_copy_url, second_copy_data, format="json") |
429 second_copy_response_dict = json.loads(second_copy_response.content.decode()) |
478 second_copy_response_dict = json.loads(second_copy_response.content.decode()) |
|
479 second_copy__response_content_dict = json.loads(second_copy_response_dict.get("content", "{}")) |
430 self.assertEqual(second_copy_response.status_code, status.HTTP_201_CREATED) |
480 self.assertEqual(second_copy_response.status_code, status.HTTP_201_CREATED) |
431 self.assertEqual(Renkan.objects.count(), 3) |
481 self.assertEqual(Renkan.objects.count(), 3) |
432 # Checking data |
482 # Checking data |
433 # in the response |
483 # in the response |
434 self.assertNotEqual(second_copy_response_dict.get("id"), source_renkan_guid) |
484 self.assertNotEqual(second_copy_response_dict.get("id"), source_renkan_guid) |
435 self.assertEqual(second_copy_response_dict.get("source_revision_id"), source_revision_guid) |
485 self.assertEqual(second_copy_response_dict.get("source_revision_id"), source_revision_guid) |
436 self.assertEqual(second_copy_response_dict.get("title", ""), "new_title_copy_2") |
486 self.assertEqual(second_copy_response_dict.get("title", ""), "new_title_copy_2") |
437 self.assertEqual(second_copy_response_dict.get("content", ""), self.first_test_content) |
487 for key in list(self.first_test_content_dict.keys()) + list(set(second_copy__response_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
488 if key != "updated" and key != "created" and key!= "id" and key != "space_id": |
|
489 self.assertEqual(second_copy__response_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
438 self.assertEqual(second_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
490 self.assertEqual(second_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
439 self.assertEqual(second_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
491 self.assertEqual(second_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
440 # in the database |
492 # in the database |
441 second_copy = Renkan.objects.get(renkan_guid=second_copy_response_dict.get("id", "")) |
493 second_copy = Renkan.objects.get(renkan_guid=second_copy_response_dict.get("id", "")) |
442 second_copy_revision = Revision.objects.get(revision_guid=second_copy_response_dict.get("current_revision_id", "")) |
494 second_copy_revision = Revision.objects.get(revision_guid=second_copy_response_dict.get("current_revision_id", "")) |
443 self.assertEqual(second_copy.title, "new_title_copy_2") |
495 self.assertEqual(second_copy.title, "new_title_copy_2") |
444 self.assertEqual(second_copy.content, self.first_test_content) |
|
445 self.assertEqual(second_copy_revision.title, "new_title_copy_2") |
496 self.assertEqual(second_copy_revision.title, "new_title_copy_2") |
446 self.assertEqual(second_copy_revision.content, self.first_test_content) |
497 second_copy_revision_content_dict = json.loads(second_copy_revision.content) |
|
498 for key in list(self.first_test_content_dict.keys()) + list(set(second_copy_revision_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
499 if key != "updated" and key != "created" and key!= "id" and key != "space_id": |
|
500 self.assertEqual(second_copy_revision_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
447 self.assertEqual(getattr(second_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
501 self.assertEqual(getattr(second_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
448 self.assertEqual(getattr(second_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
502 self.assertEqual(getattr(second_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
449 self.assertEqual(getattr(second_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
503 self.assertEqual(getattr(second_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
450 |
504 |
451 ################################################### |
505 ################################################### |
454 |
508 |
455 third_copy_data = {"title": "new_title_copy_3"} |
509 third_copy_data = {"title": "new_title_copy_3"} |
456 third_copy_url = post_url+"?source_revision_id="+source_revision_guid |
510 third_copy_url = post_url+"?source_revision_id="+source_revision_guid |
457 third_copy_response = self.client.post(third_copy_url, third_copy_data, format="json") |
511 third_copy_response = self.client.post(third_copy_url, third_copy_data, format="json") |
458 third_copy_response_dict = json.loads(third_copy_response.content.decode()) |
512 third_copy_response_dict = json.loads(third_copy_response.content.decode()) |
|
513 third_copy_response_content_dict = json.loads(third_copy_response_dict.get("content", "{}")) |
459 self.assertEqual(third_copy_response.status_code, status.HTTP_201_CREATED) |
514 self.assertEqual(third_copy_response.status_code, status.HTTP_201_CREATED) |
460 self.assertEqual(Renkan.objects.count(), 4) |
515 self.assertEqual(Renkan.objects.count(), 4) |
461 # Checking data |
516 # Checking data |
462 # in the response |
517 # in the response |
463 self.assertNotEqual(third_copy_response_dict.get("id"), source_renkan_guid) |
518 self.assertNotEqual(third_copy_response_dict.get("id"), source_renkan_guid) |
464 self.assertEqual(third_copy_response_dict.get("source_revision_id"), source_revision_guid) |
519 self.assertEqual(third_copy_response_dict.get("source_revision_id"), source_revision_guid) |
465 self.assertEqual(third_copy_response_dict.get("title", ""), "new_title_copy_3") |
520 self.assertEqual(third_copy_response_dict.get("title", ""), "new_title_copy_3") |
466 self.assertEqual(third_copy_response_dict.get("content", ""), self.first_test_content) |
521 for key in list(self.first_test_content_dict.keys()) + list(set(third_copy_response_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
522 if key != "updated" and key != "created" and key!= "id" and key != "space_id": |
|
523 self.assertEqual(third_copy_response_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
467 self.assertEqual(third_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
524 self.assertEqual(third_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
468 self.assertEqual(third_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
525 self.assertEqual(third_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
469 # in the database |
526 # in the database |
470 third_copy = Renkan.objects.get(renkan_guid=third_copy_response_dict.get("id", "")) |
527 third_copy = Renkan.objects.get(renkan_guid=third_copy_response_dict.get("id", "")) |
471 third_copy_revision = Revision.objects.get(revision_guid=third_copy_response_dict.get("current_revision_id", "")) |
528 third_copy_revision = Revision.objects.get(revision_guid=third_copy_response_dict.get("current_revision_id", "")) |
|
529 third_copy_revision_content_dict = json.loads(third_copy_revision.content) |
472 self.assertEqual(third_copy.title, "new_title_copy_3") |
530 self.assertEqual(third_copy.title, "new_title_copy_3") |
473 self.assertEqual(third_copy.content, self.first_test_content) |
|
474 self.assertEqual(third_copy_revision.title, "new_title_copy_3") |
531 self.assertEqual(third_copy_revision.title, "new_title_copy_3") |
475 self.assertEqual(third_copy_revision.content, self.first_test_content) |
532 for key in list(self.first_test_content_dict.keys()) + list(set(third_copy_revision_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
533 if key != "updated" and key != "created" and key!= "id" and key != "space_id": |
|
534 self.assertEqual(third_copy_revision_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
476 self.assertEqual(getattr(third_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
535 self.assertEqual(getattr(third_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
477 self.assertEqual(getattr(third_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
536 self.assertEqual(getattr(third_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
478 self.assertEqual(getattr(third_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
537 self.assertEqual(getattr(third_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
479 |
538 |
480 ################################################### |
539 ################################################### |
483 |
542 |
484 fourth_copy_data = {"source_revision_id": source_revision_guid} |
543 fourth_copy_data = {"source_revision_id": source_revision_guid} |
485 fourth_copy_url = post_url |
544 fourth_copy_url = post_url |
486 fourth_copy_response = self.client.post(fourth_copy_url, fourth_copy_data, format="json") |
545 fourth_copy_response = self.client.post(fourth_copy_url, fourth_copy_data, format="json") |
487 fourth_copy_response_dict = json.loads(fourth_copy_response.content.decode()) |
546 fourth_copy_response_dict = json.loads(fourth_copy_response.content.decode()) |
|
547 fourth_copy_response_content_dict = json.loads(fourth_copy_response_dict.get("content", "{}")) |
488 self.assertEqual(fourth_copy_response.status_code, status.HTTP_201_CREATED) |
548 self.assertEqual(fourth_copy_response.status_code, status.HTTP_201_CREATED) |
489 self.assertEqual(Renkan.objects.count(), 5) |
549 self.assertEqual(Renkan.objects.count(), 5) |
490 # Checking data |
550 # Checking data |
491 # in the response |
551 # in the response |
492 self.assertNotEqual(fourth_copy_response_dict.get("id"), source_renkan_guid) |
552 self.assertNotEqual(fourth_copy_response_dict.get("id"), source_renkan_guid) |
493 self.assertEqual(fourth_copy_response_dict.get("source_revision_id"), source_revision_guid) |
553 self.assertEqual(fourth_copy_response_dict.get("source_revision_id"), source_revision_guid) |
494 self.assertEqual(fourth_copy_response_dict.get("title", ""), self.first_test_title) |
554 self.assertEqual(fourth_copy_response_dict.get("title", ""), self.first_test_title) |
495 self.assertEqual(fourth_copy_response_dict.get("content", ""), self.first_test_content) |
555 for key in list(self.first_test_content_dict.keys()) + list(set(fourth_copy_response_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
556 if key != "updated" and key != "created" and key!= "id" and key != "space_id": |
|
557 self.assertEqual(fourth_copy_response_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
496 self.assertEqual(fourth_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
558 self.assertEqual(fourth_copy_response_dict.get("created_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
497 self.assertEqual(fourth_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
559 self.assertEqual(fourth_copy_response_dict.get("last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD)) |
498 # in the database |
560 # in the database |
499 fourth_copy = Renkan.objects.get(renkan_guid=fourth_copy_response_dict.get("id", "")) |
561 fourth_copy = Renkan.objects.get(renkan_guid=fourth_copy_response_dict.get("id", "")) |
500 fourth_copy_revision = Revision.objects.get(revision_guid=fourth_copy_response_dict.get("current_revision_id", "")) |
562 fourth_copy_revision = Revision.objects.get(revision_guid=fourth_copy_response_dict.get("current_revision_id", "")) |
501 self.assertEqual(fourth_copy.title, self.first_test_title) |
563 self.assertEqual(fourth_copy.title, self.first_test_title) |
502 self.assertEqual(fourth_copy.content, self.first_test_content) |
|
503 self.assertEqual(fourth_copy_revision.title, self.first_test_title) |
564 self.assertEqual(fourth_copy_revision.title, self.first_test_title) |
504 self.assertEqual(fourth_copy_revision.content, self.first_test_content) |
565 fourth_copy_revision_content_dict = json.loads(fourth_copy_revision.content) |
|
566 for key in list(self.first_test_content_dict.keys()) + list(set(fourth_copy_revision_content_dict.keys()) - set(self.first_test_content_dict.keys())): |
|
567 if key != "updated" and key != "created" and key!= "id" and key != "space_id": |
|
568 self.assertEqual(fourth_copy_revision_content_dict.get(key, ""), self.first_test_content_dict.get(key, "")) |
505 self.assertEqual(getattr(fourth_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
569 self.assertEqual(getattr(fourth_copy.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
506 self.assertEqual(getattr(fourth_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
570 self.assertEqual(getattr(fourth_copy_revision.creator, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
507 self.assertEqual(getattr(fourth_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
571 self.assertEqual(getattr(fourth_copy_revision.last_updated_by, User.USERNAME_FIELD), getattr(self.user, User.USERNAME_FIELD)) |
508 |
572 |
509 |
573 |
540 data = {"title": self.first_test_title, "content": self.first_test_content} |
604 data = {"title": self.first_test_title, "content": self.first_test_content} |
541 post_response = self.client.post(post_url, data, format="json") |
605 post_response = self.client.post(post_url, data, format="json") |
542 post_response_dict = json.loads(post_response.content.decode()) |
606 post_response_dict = json.loads(post_response.content.decode()) |
543 to_delete_renkan_guid = post_response_dict.get("id", "") |
607 to_delete_renkan_guid = post_response_dict.get("id", "") |
544 to_delete_revision_guid = post_response_dict.get("current_revision_id", "") |
608 to_delete_revision_guid = post_response_dict.get("current_revision_id", "") |
|
609 to_delete_renkan_ts = json.loads(post_response_dict.get("content", "")).get("updated", "") |
545 |
610 |
546 ################################################### |
611 ################################################### |
547 # POSTing copy |
612 # POSTing copy |
548 ################################################### |
613 ################################################### |
549 data = {} |
614 data = {} |
550 post_response = self.client.post(post_url+"?source="+to_delete_renkan_guid, data, format="json") |
615 post_response = self.client.post(post_url+"?source="+to_delete_renkan_guid, data, format="json") |
551 post_response_dict = json.loads(post_response.content.decode()) |
616 post_response_dict = json.loads(post_response.content.decode()) |
552 copy_renkan_guid = post_response_dict.get("id", "") |
617 copy_renkan_guid = post_response_dict.get("id", "") |
553 |
618 |
554 # Adding another revision |
619 # Adding another revision |
555 put_data = {"title": self.first_test_title+"_edited!", "create_new_revision": True} |
620 put_data = {"title": self.first_test_title+"_edited!", "validation_timestamp": to_delete_renkan_ts, "create_new_revision": True} |
556 put_url = reverse("v1.0:renkan_detail", kwargs={"renkan_guid":to_delete_renkan_guid}) |
621 put_url = reverse("v1.0:renkan_detail", kwargs={"renkan_guid":to_delete_renkan_guid}) |
557 put_response = self.client.put(put_url, put_data, format="json") |
622 put_response = self.client.put(put_url, put_data, format="json") |
558 self.assertEqual(Renkan.objects.count(), 2) |
623 self.assertEqual(Renkan.objects.count(), 2) |
559 self.assertEqual(Revision.objects.count(), 3) |
624 self.assertEqual(Revision.objects.count(), 3) |
560 |
625 |