Best Python code snippet using Kiwi_python
test_post_comment.py
Source:test_post_comment.py
...22 fixtures = [23 'openbook_circles/fixtures/circles.json',24 'openbook_common/fixtures/languages.json'25 ]26 def test_can_get_own_post_comment(self):27 """28 should be able to get an own comment in own post and return 20029 """30 user = make_user()31 post = user.create_public_post(text=make_fake_post_text())32 post_comment_text = make_fake_post_comment_text()33 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)34 url = self._get_url(post_comment=post_comment, post=post)35 headers = make_authentication_headers_for_user(user)36 response = self.client.get(url, **headers)37 self.assertEqual(response.status_code, status.HTTP_200_OK)38 def test_can_get_foreign_public_post_comment(self):39 """40 should be able to get an own comment in a foreign public post and return 20041 """42 user = make_user()43 post_creator = make_user()44 commenter = make_user()45 foreign_post = post_creator.create_public_post(text=make_fake_post_text())46 post_comment_text = make_fake_post_comment_text()47 post_comment = commenter.comment_post_with_id(foreign_post.pk, text=post_comment_text)48 url = self._get_url(post_comment=post_comment, post=foreign_post)49 headers = make_authentication_headers_for_user(user)50 response = self.client.get(url, **headers)51 self.assertEqual(response.status_code, status.HTTP_200_OK)52 def test_can_get_foreign_encircled_post_comment_part_of(self):53 """54 should be able to get a foreign encircled post comment part of and return 20055 """56 user = make_user()57 post_creator = make_user()58 circle = make_user()59 post_creator.connect_with_user_with_id(user.pk)60 user.confirm_connection_with_user_with_id(post_creator.pk)61 commenter = make_user()62 post_creator.connect_with_user_with_id(commenter.pk)63 commenter.confirm_connection_with_user_with_id(post_creator.pk)64 foreign_post = post_creator.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])65 post_comment_text = make_fake_post_comment_text()66 post_comment = commenter.comment_post_with_id(foreign_post.pk, text=post_comment_text)67 url = self._get_url(post_comment=post_comment, post=foreign_post)68 headers = make_authentication_headers_for_user(user)69 response = self.client.get(url, **headers)70 self.assertEqual(response.status_code, status.HTTP_200_OK)71 def test_cant_get_foreign_encircled_post_comment_part_of(self):72 """73 should NOT be able to get a foreign encircled post comment NOT part of and return 40074 """75 user = make_user()76 post_creator = make_user()77 circle = make_user()78 commenter = make_user()79 post_creator.connect_with_user_with_id(commenter.pk)80 commenter.confirm_connection_with_user_with_id(post_creator.pk)81 foreign_post = post_creator.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])82 post_comment_text = make_fake_post_comment_text()83 post_comment = commenter.comment_post_with_id(foreign_post.pk, text=post_comment_text)84 url = self._get_url(post_comment=post_comment, post=foreign_post)85 headers = make_authentication_headers_for_user(user)86 response = self.client.get(url, **headers)87 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)88 def test_can_get_public_community_post_comment(self):89 """90 should be able to get a comment in a public community post and return 20091 """92 user = make_user()93 community_creator = make_user()94 community = make_community(creator=community_creator)95 community_post_creator = make_user()96 community_post_creator.join_community_with_name(community_name=community.name)97 community_post_commentator = make_user()98 community_post_commentator.join_community_with_name(community_name=community.name)99 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)100 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),101 post_id=post.pk)102 url = self._get_url(post_comment=post_comment, post=post)103 headers = make_authentication_headers_for_user(user)104 response = self.client.get(url, **headers)105 self.assertEqual(response.status_code, status.HTTP_200_OK)106 def test_can_get_private_community_post_comment_part_of(self):107 """108 should be able to get a comment in a private community part of post and return 200109 """110 user = make_user()111 community_creator = make_user()112 community = make_community(creator=community_creator, type=Community.COMMUNITY_TYPE_PRIVATE)113 community_creator.invite_user_with_username_to_community_with_name(username=user.username,114 community_name=community.name)115 user.join_community_with_name(community_name=community.name)116 community_post_creator = make_user()117 community_creator.invite_user_with_username_to_community_with_name(username=community_post_creator.username,118 community_name=community.name)119 community_post_creator.join_community_with_name(community_name=community.name)120 community_post_commentator = make_user()121 community_creator.invite_user_with_username_to_community_with_name(122 username=community_post_commentator.username,123 community_name=community.name)124 community_post_commentator.join_community_with_name(community_name=community.name)125 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)126 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),127 post_id=post.pk)128 url = self._get_url(post_comment=post_comment, post=post)129 headers = make_authentication_headers_for_user(user)130 response = self.client.get(url, **headers)131 self.assertEqual(response.status_code, status.HTTP_200_OK)132 def test_cant_get_private_community_post_comment_not_part_of(self):133 """134 should NOT be able to get a comment in a private community NOT part of post and return 200135 """136 user = make_user()137 community_creator = make_user()138 community = make_community(creator=community_creator, type=Community.COMMUNITY_TYPE_PRIVATE)139 community_post_creator = make_user()140 community_creator.invite_user_with_username_to_community_with_name(username=community_post_creator.username,141 community_name=community.name)142 community_post_creator.join_community_with_name(community_name=community.name)143 community_post_commentator = make_user()144 community_creator.invite_user_with_username_to_community_with_name(145 username=community_post_commentator.username,146 community_name=community.name)147 community_post_commentator.join_community_with_name(community_name=community.name)148 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)149 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),150 post_id=post.pk)151 url = self._get_url(post_comment=post_comment, post=post)152 headers = make_authentication_headers_for_user(user)153 response = self.client.get(url, **headers)154 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)155 def test_can_delete_foreign_comment_in_own_post(self):156 """157 should be able to delete a foreign comment in own post and return 200158 """159 user = make_user()160 commenter = make_user()161 post = user.create_public_post(text=make_fake_post_text())162 post_comment_text = make_fake_post_comment_text()163 post_comment = commenter.comment_post_with_id(post.pk, text=post_comment_text)164 url = self._get_url(post_comment=post_comment, post=post)165 headers = make_authentication_headers_for_user(user)166 response = self.client.delete(url, **headers)167 self.assertEqual(response.status_code, status.HTTP_200_OK)168 self.assertFalse(PostComment.objects.filter(id=post_comment.pk).exists())169 def test_can_delete_community_post_comment_if_mod(self):170 """171 should be able to delete a community post comment if is moderator and return 200172 """173 user = make_user()174 community_creator = make_user()175 community = make_community(creator=community_creator)176 user.join_community_with_name(community_name=community.name)177 community_creator.add_moderator_with_username_to_community_with_name(username=user.username,178 community_name=community.name)179 community_post_creator = make_user()180 community_post_creator.join_community_with_name(community_name=community.name)181 community_post_commentator = make_user()182 community_post_commentator.join_community_with_name(community_name=community.name)183 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)184 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),185 post_id=post.pk)186 url = self._get_url(post_comment=post_comment, post=post)187 headers = make_authentication_headers_for_user(user)188 response = self.client.delete(url, **headers)189 self.assertEqual(response.status_code, status.HTTP_200_OK)190 self.assertFalse(PostComment.objects.filter(id=post_comment.pk).exists())191 def test_can_delete_community_post_comment_if_admin(self):192 """193 should be able to delete a community post comment if is administrator and return 200194 """195 user = make_user()196 community_creator = make_user()197 community = make_community(creator=community_creator)198 user.join_community_with_name(community_name=community.name)199 community_creator.add_administrator_with_username_to_community_with_name(username=user.username,200 community_name=community.name)201 community_post_creator = make_user()202 community_post_creator.join_community_with_name(community_name=community.name)203 community_post_commentator = make_user()204 community_post_commentator.join_community_with_name(community_name=community.name)205 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)206 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),207 post_id=post.pk)208 url = self._get_url(post_comment=post_comment, post=post)209 headers = make_authentication_headers_for_user(user)210 response = self.client.delete(url, **headers)211 self.assertEqual(response.status_code, status.HTTP_200_OK)212 self.assertFalse(PostComment.objects.filter(id=post_comment.pk).exists())213 def test_can_delete_community_post_comment_for_post_with_disabled_comments_if_comment_owner(self):214 """215 should be able to delete a community post comment for post with disabled comments if comment owner216 """217 user = make_user()218 admin = make_user()219 community = make_community(creator=admin)220 user.join_community_with_name(community_name=community.name)221 community_post_creator = make_user()222 community_post_creator.join_community_with_name(community_name=community.name)223 commenter = make_user()224 commenter.join_community_with_name(community_name=community.name)225 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)226 post_comment = commenter.comment_post_with_id(text=make_fake_post_comment_text(),227 post_id=post.pk)228 post.comments_enabled = False229 post.save()230 url = self._get_url(post_comment=post_comment, post=post)231 headers = make_authentication_headers_for_user(commenter)232 response = self.client.delete(url, **headers)233 self.assertEqual(response.status_code, status.HTTP_200_OK)234 self.assertFalse(PostComment.objects.filter(id=post_comment.pk).exists())235 def test_can_delete_community_post_comment_with_disabled_comments_if_admin(self):236 """237 should be able to delete a community post comment for post with comments disabled if administrator238 """239 user = make_user()240 community_creator = make_user()241 community = make_community(creator=community_creator)242 user.join_community_with_name(community_name=community.name)243 community_creator.add_administrator_with_username_to_community_with_name(username=user.username,244 community_name=community.name)245 community_post_creator = make_user()246 community_post_creator.join_community_with_name(community_name=community.name)247 community_post_commentator = make_user()248 community_post_commentator.join_community_with_name(community_name=community.name)249 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)250 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),251 post_id=post.pk)252 post.comments_enabled = False253 post.save()254 url = self._get_url(post_comment=post_comment, post=post)255 headers = make_authentication_headers_for_user(user)256 response = self.client.delete(url, **headers)257 self.assertEqual(response.status_code, status.HTTP_200_OK)258 self.assertFalse(PostComment.objects.filter(id=post_comment.pk).exists())259 def test_can_delete_community_post_comment_for_post_with_disabled_comments_if_moderator(self):260 """261 should be able to delete a community post comment for post with disabled comments if moderator262 """263 user = make_user()264 community_creator = make_user()265 community = make_community(creator=community_creator)266 user.join_community_with_name(community_name=community.name)267 community_creator.add_moderator_with_username_to_community_with_name(username=user.username,268 community_name=community.name)269 community_post_creator = make_user()270 community_post_creator.join_community_with_name(community_name=community.name)271 community_post_commentator = make_user()272 community_post_commentator.join_community_with_name(community_name=community.name)273 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)274 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),275 post_id=post.pk)276 post.comments_enabled = False277 post.save()278 url = self._get_url(post_comment=post_comment, post=post)279 headers = make_authentication_headers_for_user(user)280 response = self.client.delete(url, **headers)281 self.assertEqual(response.status_code, status.HTTP_200_OK)282 self.assertFalse(PostComment.objects.filter(id=post_comment.pk).exists())283 def test_can_delete_community_post_comment_with_closed_post_if_admin(self):284 """285 should be able to delete a community post comment for closed post if administrator286 """287 user = make_user()288 community_creator = make_user()289 community = make_community(creator=community_creator)290 user.join_community_with_name(community_name=community.name)291 community_creator.add_administrator_with_username_to_community_with_name(username=user.username,292 community_name=community.name)293 community_post_creator = make_user()294 community_post_creator.join_community_with_name(community_name=community.name)295 community_post_commentator = make_user()296 community_post_commentator.join_community_with_name(community_name=community.name)297 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)298 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),299 post_id=post.pk)300 post.is_closed = True301 post.save()302 url = self._get_url(post_comment=post_comment, post=post)303 headers = make_authentication_headers_for_user(user)304 response = self.client.delete(url, **headers)305 self.assertEqual(response.status_code, status.HTTP_200_OK)306 self.assertFalse(PostComment.objects.filter(id=post_comment.pk).exists())307 def test_can_delete_community_post_comment_for_closed_post_if_moderator(self):308 """309 should be able to delete a community post comment for closed post if moderator310 """311 user = make_user()312 community_creator = make_user()313 community = make_community(creator=community_creator)314 user.join_community_with_name(community_name=community.name)315 community_creator.add_moderator_with_username_to_community_with_name(username=user.username,316 community_name=community.name)317 community_post_creator = make_user()318 community_post_creator.join_community_with_name(community_name=community.name)319 community_post_commentator = make_user()320 community_post_commentator.join_community_with_name(community_name=community.name)321 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)322 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),323 post_id=post.pk)324 post.is_closed = True325 post.save()326 url = self._get_url(post_comment=post_comment, post=post)327 headers = make_authentication_headers_for_user(user)328 response = self.client.delete(url, **headers)329 self.assertEqual(response.status_code, status.HTTP_200_OK)330 self.assertFalse(PostComment.objects.filter(id=post_comment.pk).exists())331 def test_cannot_delete_community_post_comment_for_closed_post_if_comment_owner(self):332 """333 should NOT be able to delete a community post comment for closed post if comment owner334 """335 user = make_user()336 admin = make_user()337 community = make_community(creator=admin)338 user.join_community_with_name(community_name=community.name)339 community_post_creator = make_user()340 community_post_creator.join_community_with_name(community_name=community.name)341 commenter = make_user()342 commenter.join_community_with_name(community_name=community.name)343 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)344 post_comment = commenter.comment_post_with_id(text=make_fake_post_comment_text(),345 post_id=post.pk)346 post.is_closed = True347 post.save()348 url = self._get_url(post_comment=post_comment, post=post)349 headers = make_authentication_headers_for_user(commenter)350 response = self.client.delete(url, **headers)351 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)352 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).exists())353 def test_cannot_delete_own_community_post_comment_for_closed_post_if_post_creator(self):354 """355 should NOT be able to delete own community post comment for closed post if post creator356 """357 user = make_user()358 admin = make_user()359 community = make_community(creator=admin)360 user.join_community_with_name(community_name=community.name)361 community_post_creator = make_user()362 community_post_creator.join_community_with_name(community_name=community.name)363 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)364 post_comment = community_post_creator.comment_post_with_id(text=make_fake_post_comment_text(),365 post_id=post.pk)366 post.is_closed = True367 post.save()368 url = self._get_url(post_comment=post_comment, post=post)369 headers = make_authentication_headers_for_user(community_post_creator)370 response = self.client.delete(url, **headers)371 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)372 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).exists())373 def test_logs_community_post_comment_deleted_by_non_creator(self):374 """375 should create a log when a community post comment was deleted by an admin/moderator376 """377 user = make_user()378 community_creator = make_user()379 community = make_community(creator=community_creator)380 user.join_community_with_name(community_name=community.name)381 community_creator.add_administrator_with_username_to_community_with_name(username=user.username,382 community_name=community.name)383 community_post_creator = make_user()384 community_post_creator.join_community_with_name(community_name=community.name)385 community_post_commentator = make_user()386 community_post_commentator.join_community_with_name(community_name=community.name)387 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)388 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),389 post_id=post.pk)390 url = self._get_url(post_comment=post_comment, post=post)391 headers = make_authentication_headers_for_user(user)392 self.client.delete(url, **headers)393 self.assertTrue(394 community.logs.filter(action_type='RPC', target_user=community_post_commentator, source_user=user).exists())395 def test_can_delete_own_comment_in_foreign_public_post(self):396 """397 should be able to delete own comment in foreign public post and return 200398 """399 user = make_user()400 foreign_user = make_user()401 post = foreign_user.create_public_post(text=make_fake_post_text())402 post_comment_text = make_fake_post_comment_text()403 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)404 url = self._get_url(post_comment=post_comment, post=post)405 headers = make_authentication_headers_for_user(user)406 response = self.client.delete(url, **headers)407 self.assertEqual(response.status_code, status.HTTP_200_OK)408 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 0)409 def test_cannot_delete_foreign_comment_in_foreign_public_post(self):410 """411 should NOT be able to delete foreign comment in foreign public post and return 400412 """413 user = make_user()414 foreign_user = make_user()415 post = foreign_user.create_public_post(text=make_fake_post_text())416 post_comment_text = make_fake_post_comment_text()417 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)418 url = self._get_url(post_comment=post_comment, post=post)419 headers = make_authentication_headers_for_user(user)420 response = self.client.delete(url, **headers)421 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)422 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 1)423 def test_can_delete_own_comment_in_connected_user_public_post(self):424 """425 should be able to delete own comment in a connected user public post and return 200426 """427 user = make_user()428 user_to_connect = make_user()429 user.connect_with_user_with_id(user_to_connect.pk)430 user_to_connect.confirm_connection_with_user_with_id(user.pk)431 post = user_to_connect.create_public_post(text=make_fake_post_text())432 post_comment_text = make_fake_post_comment_text()433 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)434 url = self._get_url(post_comment=post_comment, post=post)435 headers = make_authentication_headers_for_user(user)436 response = self.client.delete(url, **headers)437 self.assertEqual(response.status_code, status.HTTP_200_OK)438 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 0)439 def test_cannot_delete_foreign_comment_in_connected_user_public_post(self):440 """441 should not be able to delete foreign comment in a connected user public post and return 400442 """443 user = make_user()444 user_to_connect = make_user()445 user.connect_with_user_with_id(user_to_connect.pk)446 user_to_connect.confirm_connection_with_user_with_id(user.pk)447 foreign_user = make_user()448 post = user_to_connect.create_public_post(text=make_fake_post_text())449 post_comment_text = make_fake_post_comment_text()450 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)451 url = self._get_url(post_comment=post_comment, post=post)452 headers = make_authentication_headers_for_user(user)453 response = self.client.delete(url, **headers)454 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)455 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 1)456 def test_can_delete_own_comment_in_connected_user_encircled_post_part_of(self):457 """458 should be able to delete own comment in a connected user encircled post it's part of and return 200459 """460 user = make_user()461 user_to_connect = make_user()462 circle = make_circle(creator=user_to_connect)463 user.connect_with_user_with_id(user_to_connect.pk)464 user_to_connect.confirm_connection_with_user_with_id(user.pk, circles_ids=[circle.pk])465 post = user_to_connect.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])466 post_comment_text = make_fake_post_comment_text()467 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)468 url = self._get_url(post_comment=post_comment, post=post)469 headers = make_authentication_headers_for_user(user)470 response = self.client.delete(url, **headers)471 self.assertEqual(response.status_code, status.HTTP_200_OK)472 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 0)473 def test_cannot_delete_foreign_comment_in_connected_user_encircled_post_part_of(self):474 """475 should NOT be able to delete foreign comment in a connected user encircled post it's part of and return 400476 """477 user = make_user()478 user_to_connect = make_user()479 circle = make_circle(creator=user_to_connect)480 user.connect_with_user_with_id(user_to_connect.pk)481 user_to_connect.confirm_connection_with_user_with_id(user.pk, circles_ids=[circle.pk])482 foreign_user = make_user()483 foreign_user.connect_with_user_with_id(user_to_connect.pk)484 user_to_connect.confirm_connection_with_user_with_id(foreign_user.pk, circles_ids=[circle.pk])485 post = user_to_connect.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])486 post_comment_text = make_fake_post_comment_text()487 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)488 url = self._get_url(post_comment=post_comment, post=post)489 headers = make_authentication_headers_for_user(user)490 response = self.client.delete(url, **headers)491 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)492 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 1)493 def test_cannot_delete_foreign_comment_in_connected_user_encircled_post_not_part_of(self):494 """495 should NOT be able to delete foreign comment in a connected user encircled post NOT part of and return 400496 """497 user = make_user()498 user_to_connect = make_user()499 circle = make_circle(creator=user_to_connect)500 foreign_user = make_user()501 foreign_user.connect_with_user_with_id(user_to_connect.pk)502 user_to_connect.confirm_connection_with_user_with_id(foreign_user.pk, circles_ids=[circle.pk])503 post = user_to_connect.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])504 post_comment_text = make_fake_post_comment_text()505 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)506 url = self._get_url(post_comment=post_comment, post=post)507 headers = make_authentication_headers_for_user(user)508 response = self.client.delete(url, **headers)509 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)510 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 1)511 def test_can_delete_own_comment_in_followed_user_public_post(self):512 """513 should be able to delete own comment in a followed user public post and return 200514 """515 user = make_user()516 user_to_follow = make_user()517 user.follow_user_with_id(user_to_follow.pk)518 post = user_to_follow.create_public_post(text=make_fake_post_text())519 post_comment_text = make_fake_post_comment_text()520 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)521 url = self._get_url(post_comment=post_comment, post=post)522 headers = make_authentication_headers_for_user(user)523 response = self.client.delete(url, **headers)524 self.assertEqual(response.status_code, status.HTTP_200_OK)525 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 0)526 def test_cannot_delete_foreign_comment_in_followed_user_public_post(self):527 """528 should not be able to delete foreign comment in a followed user public post and return 400529 """530 user = make_user()531 user_to_follow = make_user()532 user.follow_user_with_id(user_to_follow.pk)533 foreign_user = make_user()534 post = user_to_follow.create_public_post(text=make_fake_post_text())535 post_comment_text = make_fake_post_comment_text()536 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)537 url = self._get_url(post_comment=post_comment, post=post)538 headers = make_authentication_headers_for_user(user)539 response = self.client.delete(url, **headers)540 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)541 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 1)542 def test_cannot_delete_foreign_comment_in_folowed_user_encircled_post(self):543 """544 should not be able to delete foreign comment in a followed user encircled post and return 400545 """546 user = make_user()547 user_to_follow = make_user()548 circle = make_circle(creator=user_to_follow)549 user.follow_user_with_id(user_to_follow.pk)550 foreign_user = make_user()551 foreign_user.connect_with_user_with_id(user_to_follow.pk)552 user_to_follow.confirm_connection_with_user_with_id(foreign_user.pk, circles_ids=[circle.pk])553 post = user_to_follow.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])554 post_comment_text = make_fake_post_comment_text()555 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)556 url = self._get_url(post_comment=post_comment, post=post)557 headers = make_authentication_headers_for_user(user)558 response = self.client.delete(url, **headers)559 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)560 self.assertTrue(PostComment.objects.filter(id=post_comment.pk).count() == 1)561 def test_post_comment_notification_is_deleted_when_deleting_comment(self):562 """563 should delete the post comment notification when a post comment is deleted564 """565 user = make_user()566 commenter = make_user()567 post = user.create_public_post(text=make_fake_post_text())568 post_comment_text = make_fake_post_comment_text()569 post_comment = commenter.comment_post_with_id(post.pk, text=post_comment_text)570 post_comment_notification = PostCommentNotification.objects.get(post_comment=post_comment,571 notification__owner=user)572 notification = Notification.objects.get(notification_type=Notification.POST_COMMENT,573 object_id=post_comment_notification.pk)574 url = self._get_url(post_comment=post_comment, post=post)575 headers = make_authentication_headers_for_user(commenter)576 self.client.delete(url, **headers)577 self.assertFalse(PostCommentReplyNotification.objects.filter(pk=post_comment_notification.pk).exists())578 self.assertFalse(Notification.objects.filter(pk=notification.pk).exists())579 def test_can_edit_own_post_comment_on_own_post(self):580 """581 should be able to edit own post comment582 """583 user = make_user()584 post = user.create_public_post(text=make_fake_post_text())585 original_post_comment_text = make_fake_post_comment_text()586 post_comment = user.comment_post_with_id(post.pk, text=original_post_comment_text)587 url = self._get_url(post_comment=post_comment, post=post)588 edited_post_comment_text = make_fake_post_comment_text()589 headers = make_authentication_headers_for_user(user)590 response = self.client.patch(url, {591 'text': edited_post_comment_text592 }, **headers)593 self.assertEqual(response.status_code, status.HTTP_200_OK)594 post_comment.refresh_from_db()595 self.assertTrue(post_comment.text == edited_post_comment_text)596 self.assertTrue(post_comment.is_edited)597 def test_editing_own_post_comment_updates_mentions(self):598 """599 should update mentions when updating text600 """601 user = make_user()602 headers = make_authentication_headers_for_user(user=user)603 mentioned_user = make_user()604 post_comment_text = 'Hello @' + mentioned_user.username605 post = user.create_public_post(text=make_fake_post_text())606 post_comment = user.comment_post(post=post, text=post_comment_text)607 post_comment_user_mention = PostCommentUserMention.objects.get(user_id=mentioned_user.pk,608 post_comment_id=post_comment.pk)609 newly_mentioned_user = make_user()610 post_comment_text = 'Hello @' + newly_mentioned_user.username611 data = {612 'text': post_comment_text613 }614 url = self._get_url(post_comment=post_comment, post=post)615 response = self.client.patch(url, data, **headers, format='multipart')616 self.assertEqual(status.HTTP_200_OK, response.status_code)617 post_comment = PostComment.objects.get(text=post_comment_text, commenter_id=user.pk)618 self.assertFalse(619 PostCommentUserMention.objects.filter(user_id=mentioned_user.pk, post_comment_id=post_comment.pk).exists())620 self.assertEqual(PostCommentUserMention.objects.filter(user_id=newly_mentioned_user.pk,621 post_comment_id=post_comment.pk).count(), 1)622 new_post_comment_user_mention = PostCommentUserMention.objects.get(user_id=newly_mentioned_user.pk,623 post_comment_id=post_comment.pk)624 self.assertFalse(625 PostCommentUserMentionNotification.objects.filter(post_comment_user_mention_id=post_comment_user_mention.pk,626 notification__owner_id=mentioned_user.pk,627 notification__notification_type=Notification.POST_COMMENT_USER_MENTION).exists())628 self.assertTrue(PostCommentUserMentionNotification.objects.filter(629 post_comment_user_mention_id=new_post_comment_user_mention.pk,630 notification__owner_id=newly_mentioned_user.pk,631 notification__notification_type=Notification.POST_COMMENT_USER_MENTION).exists())632 def test_editing_text_post_comment_ignores_non_existing_mentioned_usernames(self):633 """634 should ignore non existing mentioned usernames when editing a post_comment635 """636 user = make_user()637 headers = make_authentication_headers_for_user(user=user)638 post = user.create_public_post(text=make_fake_post_text())639 post_comment = user.comment_post(post=post, text=make_fake_post_text())640 fake_username = 'nonexistinguser'641 post_comment_text = 'Hello @' + fake_username642 data = {643 'text': post_comment_text644 }645 url = self._get_url(post_comment=post_comment, post=post)646 response = self.client.patch(url, data, **headers, format='multipart')647 self.assertEqual(response.status_code, status.HTTP_200_OK)648 post_comment = PostComment.objects.get(text=post_comment_text, commenter_id=user.pk)649 self.assertEqual(PostCommentUserMention.objects.filter(post_comment_id=post_comment.pk).count(), 0)650 def test_editing_text_post_comment_ignores_casing_of_mentioned_usernames(self):651 """652 should ignore non existing mentioned usernames casings when editing a post_comment653 """654 user = make_user()655 newly_mentioned_user = make_user(username='Miguel')656 headers = make_authentication_headers_for_user(user=user)657 post = user.create_public_post(text=make_fake_post_text())658 post_comment = user.comment_post(post=post, text=make_fake_post_text())659 post_comment_text = 'Hello @miguel'660 data = {661 'text': post_comment_text662 }663 url = self._get_url(post_comment=post_comment, post=post)664 response = self.client.patch(url, data, **headers, format='multipart')665 self.assertEqual(response.status_code, status.HTTP_200_OK)666 post_comment = PostComment.objects.get(text=post_comment_text, commenter_id=user.pk)667 self.assertTrue(PostCommentUserMention.objects.filter(user_id=newly_mentioned_user.pk,668 post_comment_id=post_comment.pk).exists())669 def test_editing_own_post_comment_does_not_create_double_mentions(self):670 """671 should not create double mentions when editing our own post_comment672 """673 user = make_user()674 headers = make_authentication_headers_for_user(user=user)675 mentioned_user = make_user()676 post_comment_text = 'Hello @' + mentioned_user.username677 post = user.create_public_post(text=make_fake_post_text())678 post_comment = user.comment_post(post=post, text=post_comment_text)679 post_comment_user_mention = PostCommentUserMention.objects.get(user_id=mentioned_user.pk,680 post_comment_id=post_comment.pk)681 data = {682 'text': post_comment_text683 }684 url = self._get_url(post_comment=post_comment, post=post)685 response = self.client.patch(url, data, **headers, format='multipart')686 self.assertEqual(status.HTTP_200_OK, response.status_code)687 post_comment = PostComment.objects.get(text=post_comment_text, commenter_id=user.pk)688 self.assertEqual(689 PostCommentUserMention.objects.filter(user_id=mentioned_user.pk, post_comment_id=post_comment.pk).count(),690 1)691 new_post_comment_user_mention = PostCommentUserMention.objects.get(user_id=mentioned_user.pk,692 post_comment_id=post_comment.pk,693 id=post_comment_user_mention.pk)694 self.assertEqual(new_post_comment_user_mention.pk, post_comment_user_mention.pk)695 def test_editing_own_post_comment_comment_with_hashtag_creates_hashtag_if_not_exist(self):696 """697 when editing a post comment with a hashtag, should create it if not exists698 """699 user = make_user()700 headers = make_authentication_headers_for_user(user=user)701 hashtag_name = make_hashtag_name()702 post_comment_text = 'One hashtag #' + hashtag_name703 post = user.create_public_post(text=make_fake_post_text())704 post_comment = user.comment_post(post=post, text=post_comment_text)705 new_hashtag_name = make_hashtag_name()706 new_post_comment_commenttext = 'Another hashtag #' + new_hashtag_name707 data = {708 'text': new_post_comment_commenttext709 }710 url = self._get_url(post=post, post_comment=post_comment)711 response = self.client.patch(url, data, **headers, format='multipart')712 self.assertEqual(status.HTTP_200_OK, response.status_code)713 created_hashtag = Hashtag.objects.get(name=new_hashtag_name)714 self.assertTrue(post_comment.hashtags.filter(pk=created_hashtag.pk).exists())715 self.assertEqual(post_comment.hashtags.all().count(), 1)716 def test_editing_own_post_comment_comment_with_hashtag_updates_to_existing_hashtag_exists(self):717 """718 when editing a post comment with a hashtag, should update to it if exists719 """720 user = make_user()721 headers = make_authentication_headers_for_user(user=user)722 hashtag = make_hashtag()723 post_comment_text = 'One hashtag #' + hashtag.name724 post = user.create_public_post(text=make_fake_post_text())725 post_comment = user.comment_post(post=post, text=post_comment_text)726 new_hashtag = make_hashtag()727 new_post_comment_commenttext = 'Another hashtag #' + new_hashtag.name728 data = {729 'text': new_post_comment_commenttext730 }731 url = self._get_url(post=post, post_comment=post_comment)732 response = self.client.patch(url, data, **headers, format='multipart')733 self.assertEqual(status.HTTP_200_OK, response.status_code)734 self.assertTrue(post_comment.hashtags.filter(pk=new_hashtag.pk).exists())735 self.assertEqual(post_comment.hashtags.all().count(), 1)736 def test_editing_own_post_comment_comment_with_hashtag_does_not_create_double_hashtags(self):737 """738 when editing a post comment with a hashtag, should not create duplicate hashtags739 """740 user = make_user()741 headers = make_authentication_headers_for_user(user=user)742 hashtag = make_hashtag()743 post_comment_text = 'One hashtag #' + hashtag.name744 post = user.create_public_post(text=make_fake_post_text())745 post_comment = user.comment_post(post=post, text=post_comment_text)746 new_post_comment_commenttext = 'Same hashtag #' + hashtag.name747 data = {748 'text': new_post_comment_commenttext749 }750 url = self._get_url(post_comment=post_comment, post=post)751 response = self.client.patch(url, data, **headers, format='multipart')752 self.assertEqual(status.HTTP_200_OK, response.status_code)753 self.assertEqual(post_comment.hashtags.filter(name=hashtag.name).count(), 1)754 self.assertEqual(post_comment.hashtags.all().count(), 1)755 @mock.patch('openbook_posts.models.get_language_for_text')756 def test_editing_own_post_comment_updates_language_of_comment(self, get_language_for_text_call):757 """758 should update language of comment when editing post comment759 """760 Language = get_language_model()761 get_language_for_text_call.return_value = Language.objects.get(id=1)762 user = make_user()763 post = user.create_public_post(text=make_fake_post_text())764 original_post_comment_text = make_fake_post_comment_text()765 post_comment = user.comment_post_with_id(post.pk, text=original_post_comment_text)766 url = self._get_url(post_comment=post_comment, post=post)767 edited_post_comment_text = make_fake_post_comment_text()768 headers = make_authentication_headers_for_user(user)769 response = self.client.patch(url, {770 'text': edited_post_comment_text771 }, **headers)772 self.assertEqual(response.status_code, status.HTTP_200_OK)773 get_language_for_text_call.assert_called_with(edited_post_comment_text)774 def test_can_edit_own_post_comment_on_others_post(self):775 """776 should be able to edit own post comment on someone else's post777 """778 user = make_user()779 post_creator = make_user()780 post = post_creator.create_public_post(text=make_fake_post_text())781 original_post_comment_text = make_fake_post_comment_text()782 post_comment = user.comment_post_with_id(post.pk, text=original_post_comment_text)783 url = self._get_url(post_comment=post_comment, post=post)784 edited_post_comment_text = make_fake_post_comment_text()785 headers = make_authentication_headers_for_user(user)786 response = self.client.patch(url, {787 'text': edited_post_comment_text788 }, **headers)789 self.assertEqual(response.status_code, status.HTTP_200_OK)790 post_comment.refresh_from_db()791 self.assertTrue(post_comment.text == edited_post_comment_text)792 def test_cannot_edit_others_post_comment(self):793 """794 should not be able to edit someone else's comment795 """796 user = make_user()797 commenter = make_user()798 post = user.create_public_post(text=make_fake_post_text())799 original_post_comment_text = make_fake_post_comment_text()800 post_comment = commenter.comment_post_with_id(post.pk, text=original_post_comment_text)801 url = self._get_url(post_comment=post_comment, post=post)802 edited_post_comment_text = make_fake_post_comment_text()803 headers = make_authentication_headers_for_user(user)804 response = self.client.patch(url, {805 'text': edited_post_comment_text806 }, **headers)807 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)808 post_comment.refresh_from_db()809 self.assertTrue(post_comment.text == original_post_comment_text)810 self.assertFalse(post_comment.is_edited)811 def test_cannot_edit_post_comment_if_comments_disabled(self):812 """813 should not be able to edit own comment if comments are disabled814 """815 admin = make_user()816 user = make_user()817 community = make_community(admin)818 user.join_community_with_name(community_name=community.name)819 post = user.create_community_post(community.name, text=make_fake_post_text())820 original_post_comment_text = make_fake_post_comment_text()821 post_comment = user.comment_post_with_id(post.pk, text=original_post_comment_text)822 post.comments_enabled = False823 post.save()824 url = self._get_url(post_comment=post_comment, post=post)825 edited_post_comment_text = make_fake_post_comment_text()826 headers = make_authentication_headers_for_user(user)827 response = self.client.patch(url, {828 'text': edited_post_comment_text829 }, **headers)830 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)831 post_comment.refresh_from_db()832 self.assertTrue(post_comment.text == original_post_comment_text)833 self.assertFalse(post_comment.is_edited)834 def test_cannot_edit_post_comment_if_post_closed_and_not_not_post_creator(self):835 """836 should NOT be able to edit own comment if post is closed and not post creator837 """838 admin = make_user()839 user = make_user()840 community = make_community(admin)841 user.join_community_with_name(community_name=community.name)842 post = admin.create_community_post(community.name, text=make_fake_post_text())843 original_post_comment_text = make_fake_post_comment_text()844 post_comment = user.comment_post_with_id(post.pk, text=original_post_comment_text)845 post.is_closed = True846 post.save()847 url = self._get_url(post_comment=post_comment, post=post)848 edited_post_comment_text = make_fake_post_comment_text()849 headers = make_authentication_headers_for_user(user)850 response = self.client.patch(url, {851 'text': edited_post_comment_text852 }, **headers)853 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)854 post_comment.refresh_from_db()855 self.assertTrue(post_comment.text == original_post_comment_text)856 self.assertFalse(post_comment.is_edited)857 def test_cannot_edit_post_comment_if_post_closed_and_post_creator(self):858 """859 should NOT be able to edit own comment if post is closed even if post creator860 """861 admin = make_user()862 user = make_user()863 community = make_community(admin)864 user.join_community_with_name(community_name=community.name)865 post = user.create_community_post(community.name, text=make_fake_post_text())866 original_post_comment_text = make_fake_post_comment_text()867 post_comment = user.comment_post_with_id(post.pk, text=original_post_comment_text)868 post.is_closed = True869 post.save()870 url = self._get_url(post_comment=post_comment, post=post)871 edited_post_comment_text = make_fake_post_comment_text()872 headers = make_authentication_headers_for_user(user)873 response = self.client.patch(url, {874 'text': edited_post_comment_text875 }, **headers)876 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)877 post_comment.refresh_from_db()878 self.assertTrue(post_comment.text == original_post_comment_text)879 self.assertFalse(post_comment.is_edited)880 def test_cannot_edit_others_community_post_comment_even_if_admin(self):881 """882 should not be able to edit someone else's comment even if community admin883 """884 user = make_user()885 admin = make_user()886 community = make_community(admin)887 user.join_community_with_name(community_name=community.name)888 post = user.create_community_post(community.name, text=make_fake_post_text())889 original_post_comment_text = make_fake_post_comment_text()890 post_comment = user.comment_post_with_id(post.pk, text=original_post_comment_text)891 url = self._get_url(post_comment=post_comment, post=post)892 edited_post_comment_text = make_fake_post_comment_text()893 headers = make_authentication_headers_for_user(admin)894 response = self.client.patch(url, {895 'text': edited_post_comment_text896 }, **headers)897 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)898 post_comment.refresh_from_db()899 self.assertTrue(post_comment.text == original_post_comment_text)900 # Post Comments that are replies901 def test_can_delete_foreign_comment_reply_in_own_post(self):902 """903 should be able to delete a foreign comment reply in own post and return 200904 """905 user = make_user()906 commenter = make_user()907 post = user.create_public_post(text=make_fake_post_text())908 post_comment_reply_text = make_fake_post_comment_text()909 post_comment = commenter.comment_post_with_id(post.pk, text=make_fake_post_comment_text())910 post_comment_reply = commenter.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,911 post_uuid=post.uuid,912 text=post_comment_reply_text)913 url = self._get_url(post_comment=post_comment_reply, post=post)914 headers = make_authentication_headers_for_user(user)915 response = self.client.delete(url, **headers)916 self.assertEqual(response.status_code, status.HTTP_200_OK)917 self.assertFalse(PostComment.objects.filter(id=post_comment_reply.pk).exists())918 def test_can_delete_community_post_comment_reply_if_mod(self):919 """920 should be able to delete a community post comment reply if is moderator and return 200921 """922 user = make_user()923 community_creator = make_user()924 community = make_community(creator=community_creator)925 user.join_community_with_name(community_name=community.name)926 community_creator.add_moderator_with_username_to_community_with_name(username=user.username,927 community_name=community.name)928 community_post_creator = make_user()929 community_post_creator.join_community_with_name(community_name=community.name)930 community_post_commentator = make_user()931 community_post_commentator.join_community_with_name(community_name=community.name)932 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)933 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),934 post_id=post.pk)935 post_comment_reply = \936 community_post_commentator.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,937 post_uuid=post.uuid,938 text=make_fake_post_comment_text())939 url = self._get_url(post_comment=post_comment_reply, post=post)940 headers = make_authentication_headers_for_user(user)941 response = self.client.delete(url, **headers)942 self.assertEqual(response.status_code, status.HTTP_200_OK)943 self.assertFalse(PostComment.objects.filter(id=post_comment_reply.pk).exists())944 def test_can_delete_community_post_comment_reply_if_admin(self):945 """946 should be able to delete a community post comment reply if is administrator and return 200947 """948 user = make_user()949 community_creator = make_user()950 community = make_community(creator=community_creator)951 user.join_community_with_name(community_name=community.name)952 community_creator.add_administrator_with_username_to_community_with_name(username=user.username,953 community_name=community.name)954 community_post_creator = make_user()955 community_post_creator.join_community_with_name(community_name=community.name)956 community_post_commentator = make_user()957 community_post_commentator.join_community_with_name(community_name=community.name)958 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)959 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),960 post_id=post.pk)961 post_comment_reply = \962 community_post_commentator.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,963 post_uuid=post.uuid,964 text=make_fake_post_comment_text())965 url = self._get_url(post_comment=post_comment_reply, post=post)966 headers = make_authentication_headers_for_user(user)967 response = self.client.delete(url, **headers)968 self.assertEqual(response.status_code, status.HTTP_200_OK)969 self.assertFalse(PostComment.objects.filter(id=post_comment_reply.pk).exists())970 def test_can_delete_community_post_comment_reply_for_post_with_disabled_comments_if_comment_owner(self):971 """972 should be able to delete a community post comment reply for post with disabled comments if comment owner973 """974 user = make_user()975 admin = make_user()976 community = make_community(creator=admin)977 user.join_community_with_name(community_name=community.name)978 community_post_creator = make_user()979 community_post_creator.join_community_with_name(community_name=community.name)980 commenter = make_user()981 commenter.join_community_with_name(community_name=community.name)982 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)983 post_comment = commenter.comment_post_with_id(text=make_fake_post_comment_text(),984 post_id=post.pk)985 post_comment_reply = \986 commenter.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,987 post_uuid=post.uuid,988 text=make_fake_post_comment_text())989 post.comments_enabled = False990 post.save()991 url = self._get_url(post_comment=post_comment_reply, post=post)992 headers = make_authentication_headers_for_user(commenter)993 response = self.client.delete(url, **headers)994 self.assertEqual(response.status_code, status.HTTP_200_OK)995 self.assertFalse(PostComment.objects.filter(id=post_comment_reply.pk).exists())996 def test_can_delete_community_post_comment_reply_with_disabled_comments_if_admin(self):997 """998 should be able to delete a community post comment reply for post with comments disabled if administrator999 """1000 user = make_user()1001 community_creator = make_user()1002 community = make_community(creator=community_creator)1003 user.join_community_with_name(community_name=community.name)1004 community_creator.add_administrator_with_username_to_community_with_name(username=user.username,1005 community_name=community.name)1006 community_post_creator = make_user()1007 community_post_creator.join_community_with_name(community_name=community.name)1008 community_post_commentator = make_user()1009 community_post_commentator.join_community_with_name(community_name=community.name)1010 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)1011 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),1012 post_id=post.pk)1013 post_comment_reply = \1014 community_post_commentator.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1015 post_uuid=post.uuid,1016 text=make_fake_post_comment_text())1017 post.comments_enabled = False1018 post.save()1019 url = self._get_url(post_comment=post_comment_reply, post=post)1020 headers = make_authentication_headers_for_user(user)1021 response = self.client.delete(url, **headers)1022 self.assertEqual(response.status_code, status.HTTP_200_OK)1023 self.assertFalse(PostComment.objects.filter(id=post_comment_reply.pk).exists())1024 def test_can_delete_community_post_comment_reply_for_post_with_disabled_comments_if_moderator(self):1025 """1026 should be able to delete a community post comment reply for post with disabled comments if moderator1027 """1028 user = make_user()1029 community_creator = make_user()1030 community = make_community(creator=community_creator)1031 user.join_community_with_name(community_name=community.name)1032 community_creator.add_moderator_with_username_to_community_with_name(username=user.username,1033 community_name=community.name)1034 community_post_creator = make_user()1035 community_post_creator.join_community_with_name(community_name=community.name)1036 community_post_commentator = make_user()1037 community_post_commentator.join_community_with_name(community_name=community.name)1038 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)1039 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),1040 post_id=post.pk)1041 post_comment_reply = \1042 community_post_commentator.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1043 post_uuid=post.uuid,1044 text=make_fake_post_comment_text())1045 post.comments_enabled = False1046 post.save()1047 url = self._get_url(post_comment=post_comment_reply, post=post)1048 headers = make_authentication_headers_for_user(user)1049 response = self.client.delete(url, **headers)1050 self.assertEqual(response.status_code, status.HTTP_200_OK)1051 self.assertFalse(PostComment.objects.filter(id=post_comment_reply.pk).exists())1052 def test_can_delete_community_post_comment_reply_with_closed_post_if_admin(self):1053 """1054 should be able to delete a community post comment reply for closed post if administrator1055 """1056 user = make_user()1057 community_creator = make_user()1058 community = make_community(creator=community_creator)1059 user.join_community_with_name(community_name=community.name)1060 community_creator.add_administrator_with_username_to_community_with_name(username=user.username,1061 community_name=community.name)1062 community_post_creator = make_user()1063 community_post_creator.join_community_with_name(community_name=community.name)1064 community_post_commentator = make_user()1065 community_post_commentator.join_community_with_name(community_name=community.name)1066 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)1067 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),1068 post_id=post.pk)1069 post_comment_reply = \1070 community_post_commentator.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1071 post_uuid=post.uuid,1072 text=make_fake_post_comment_text())1073 post.is_closed = True1074 post.save()1075 url = self._get_url(post_comment=post_comment_reply, post=post)1076 headers = make_authentication_headers_for_user(user)1077 response = self.client.delete(url, **headers)1078 self.assertEqual(response.status_code, status.HTTP_200_OK)1079 self.assertFalse(PostComment.objects.filter(id=post_comment_reply.pk).exists())1080 def test_can_delete_community_post_comment_reply_for_closed_post_if_moderator(self):1081 """1082 should be able to delete a community post comment reply for closed post if moderator1083 """1084 user = make_user()1085 community_creator = make_user()1086 community = make_community(creator=community_creator)1087 user.join_community_with_name(community_name=community.name)1088 community_creator.add_moderator_with_username_to_community_with_name(username=user.username,1089 community_name=community.name)1090 community_post_creator = make_user()1091 community_post_creator.join_community_with_name(community_name=community.name)1092 community_post_commentator = make_user()1093 community_post_commentator.join_community_with_name(community_name=community.name)1094 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)1095 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),1096 post_id=post.pk)1097 post_comment_reply = \1098 community_post_commentator.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1099 post_uuid=post.uuid,1100 text=make_fake_post_comment_text())1101 post.is_closed = True1102 post.save()1103 url = self._get_url(post_comment=post_comment_reply, post=post)1104 headers = make_authentication_headers_for_user(user)1105 response = self.client.delete(url, **headers)1106 self.assertEqual(response.status_code, status.HTTP_200_OK)1107 self.assertFalse(PostComment.objects.filter(id=post_comment_reply.pk).exists())1108 def test_cannot_delete_community_post_comment_reply_for_closed_post_if_comment_owner(self):1109 """1110 should NOT be able to delete a community post comment reply for closed post if comment owner1111 """1112 user = make_user()1113 admin = make_user()1114 community = make_community(creator=admin)1115 user.join_community_with_name(community_name=community.name)1116 community_post_creator = make_user()1117 community_post_creator.join_community_with_name(community_name=community.name)1118 commenter = make_user()1119 commenter.join_community_with_name(community_name=community.name)1120 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)1121 post_comment = commenter.comment_post_with_id(text=make_fake_post_comment_text(),1122 post_id=post.pk)1123 post_comment_reply = \1124 commenter.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1125 post_uuid=post.uuid,1126 text=make_fake_post_comment_text())1127 post.is_closed = True1128 post.save()1129 url = self._get_url(post_comment=post_comment_reply, post=post)1130 headers = make_authentication_headers_for_user(commenter)1131 response = self.client.delete(url, **headers)1132 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1133 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).exists())1134 def test_cannot_delete_own_community_post_comment_reply_for_closed_post_if_post_creator(self):1135 """1136 should NOT be able to delete own community post comment reply for closed post if post creator1137 """1138 user = make_user()1139 admin = make_user()1140 community = make_community(creator=admin)1141 user.join_community_with_name(community_name=community.name)1142 community_post_creator = make_user()1143 community_post_creator.join_community_with_name(community_name=community.name)1144 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)1145 post_comment = community_post_creator.comment_post_with_id(text=make_fake_post_comment_text(),1146 post_id=post.pk)1147 post_comment_reply = \1148 community_post_creator.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1149 post_uuid=post.uuid,1150 text=make_fake_post_comment_text())1151 post.is_closed = True1152 post.save()1153 url = self._get_url(post_comment=post_comment_reply, post=post)1154 headers = make_authentication_headers_for_user(community_post_creator)1155 response = self.client.delete(url, **headers)1156 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1157 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).exists())1158 def test_logs_community_post_comment_reply_deleted_by_non_creator(self):1159 """1160 should create a log when a community post comment reply was deleted by an admin/moderator1161 """1162 user = make_user()1163 community_creator = make_user()1164 community = make_community(creator=community_creator)1165 user.join_community_with_name(community_name=community.name)1166 community_creator.add_administrator_with_username_to_community_with_name(username=user.username,1167 community_name=community.name)1168 community_post_creator = make_user()1169 community_post_creator.join_community_with_name(community_name=community.name)1170 community_post_commentator = make_user()1171 community_post_commentator.join_community_with_name(community_name=community.name)1172 post = community_post_creator.create_community_post(text=make_fake_post_text(), community_name=community.name)1173 post_comment = community_post_commentator.comment_post_with_id(text=make_fake_post_comment_text(),1174 post_id=post.pk)1175 post_comment_reply = \1176 community_post_commentator.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1177 post_uuid=post.uuid,1178 text=make_fake_post_comment_text())1179 url = self._get_url(post_comment=post_comment_reply, post=post)1180 headers = make_authentication_headers_for_user(user)1181 self.client.delete(url, **headers)1182 self.assertTrue(1183 community.logs.filter(action_type='RPCR',1184 target_user=community_post_commentator,1185 source_user=user).exists())1186 def test_can_delete_own_comment_reply_in_foreign_public_post(self):1187 """1188 should be able to delete own comment reply in foreign public post and return 2001189 """1190 user = make_user()1191 foreign_user = make_user()1192 post = foreign_user.create_public_post(text=make_fake_post_text())1193 post_comment_text = make_fake_post_comment_text()1194 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)1195 post_comment_reply = user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1196 post_uuid=post.uuid,1197 text=make_fake_post_comment_text())1198 url = self._get_url(post_comment=post_comment_reply, post=post)1199 headers = make_authentication_headers_for_user(user)1200 response = self.client.delete(url, **headers)1201 self.assertEqual(response.status_code, status.HTTP_200_OK)1202 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 0)1203 def test_cannot_delete_foreign_comment_reply_in_foreign_public_post(self):1204 """1205 should NOT be able to delete foreign comment reply in foreign public post and return 4001206 """1207 user = make_user()1208 foreign_user = make_user()1209 post = foreign_user.create_public_post(text=make_fake_post_text())1210 post_comment_text = make_fake_post_comment_text()1211 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)1212 post_comment_reply = foreign_user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1213 post_uuid=post.uuid,1214 text=make_fake_post_comment_text())1215 url = self._get_url(post_comment=post_comment_reply, post=post)1216 headers = make_authentication_headers_for_user(user)1217 response = self.client.delete(url, **headers)1218 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1219 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 1)1220 def test_can_delete_own_comment_reply_in_connected_user_public_post(self):1221 """1222 should be able to delete own comment reply in a connected user public post and return 2001223 """1224 user = make_user()1225 user_to_connect = make_user()1226 user.connect_with_user_with_id(user_to_connect.pk)1227 user_to_connect.confirm_connection_with_user_with_id(user.pk)1228 post = user_to_connect.create_public_post(text=make_fake_post_text())1229 post_comment_text = make_fake_post_comment_text()1230 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)1231 post_comment_reply = user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1232 post_uuid=post.uuid,1233 text=make_fake_post_comment_text())1234 url = self._get_url(post_comment=post_comment_reply, post=post)1235 headers = make_authentication_headers_for_user(user)1236 response = self.client.delete(url, **headers)1237 self.assertEqual(response.status_code, status.HTTP_200_OK)1238 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 0)1239 def test_cannot_delete_foreign_comment_reply_in_connected_user_public_post(self):1240 """1241 should not be able to delete foreign comment reply in a connected user public post and return 4001242 """1243 user = make_user()1244 user_to_connect = make_user()1245 user.connect_with_user_with_id(user_to_connect.pk)1246 user_to_connect.confirm_connection_with_user_with_id(user.pk)1247 foreign_user = make_user()1248 post = user_to_connect.create_public_post(text=make_fake_post_text())1249 post_comment_text = make_fake_post_comment_text()1250 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)1251 post_comment_reply = foreign_user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1252 post_uuid=post.uuid,1253 text=make_fake_post_comment_text())1254 url = self._get_url(post_comment=post_comment_reply, post=post)1255 headers = make_authentication_headers_for_user(user)1256 response = self.client.delete(url, **headers)1257 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1258 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 1)1259 def test_can_delete_own_comment_reply_in_connected_user_encircled_post_part_of(self):1260 """1261 should be able to delete own comment reply in a connected user encircled post it's part of and return 2001262 """1263 user = make_user()1264 user_to_connect = make_user()1265 circle = make_circle(creator=user_to_connect)1266 user.connect_with_user_with_id(user_to_connect.pk)1267 user_to_connect.confirm_connection_with_user_with_id(user.pk, circles_ids=[circle.pk])1268 post = user_to_connect.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])1269 post_comment_text = make_fake_post_comment_text()1270 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)1271 post_comment_reply = user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1272 post_uuid=post.uuid,1273 text=make_fake_post_comment_text())1274 url = self._get_url(post_comment=post_comment_reply, post=post)1275 headers = make_authentication_headers_for_user(user)1276 response = self.client.delete(url, **headers)1277 self.assertEqual(response.status_code, status.HTTP_200_OK)1278 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 0)1279 def test_cannot_delete_foreign_comment_reply_in_connected_user_encircled_post_part_of(self):1280 """1281 should NOT be able to delete foreign comment reply in a connected user encircled post it's part of and return 4001282 """1283 user = make_user()1284 user_to_connect = make_user()1285 circle = make_circle(creator=user_to_connect)1286 user.connect_with_user_with_id(user_to_connect.pk)1287 user_to_connect.confirm_connection_with_user_with_id(user.pk, circles_ids=[circle.pk])1288 foreign_user = make_user()1289 foreign_user.connect_with_user_with_id(user_to_connect.pk)1290 user_to_connect.confirm_connection_with_user_with_id(foreign_user.pk, circles_ids=[circle.pk])1291 post = user_to_connect.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])1292 post_comment_text = make_fake_post_comment_text()1293 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)1294 post_comment_reply = foreign_user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1295 post_uuid=post.uuid,1296 text=make_fake_post_comment_text())1297 url = self._get_url(post_comment=post_comment_reply, post=post)1298 headers = make_authentication_headers_for_user(user)1299 response = self.client.delete(url, **headers)1300 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1301 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 1)1302 def test_cannot_delete_foreign_comment_reply_in_connected_user_encircled_post_not_part_of(self):1303 """1304 should NOT be able to delete foreign comment reply in a connected user encircled post NOT part of and return 4001305 """1306 user = make_user()1307 user_to_connect = make_user()1308 circle = make_circle(creator=user_to_connect)1309 foreign_user = make_user()1310 foreign_user.connect_with_user_with_id(user_to_connect.pk)1311 user_to_connect.confirm_connection_with_user_with_id(foreign_user.pk, circles_ids=[circle.pk])1312 post = user_to_connect.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])1313 post_comment_text = make_fake_post_comment_text()1314 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)1315 post_comment_reply = foreign_user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1316 post_uuid=post.uuid,1317 text=make_fake_post_comment_text())1318 url = self._get_url(post_comment=post_comment_reply, post=post)1319 headers = make_authentication_headers_for_user(user)1320 response = self.client.delete(url, **headers)1321 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1322 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 1)1323 def test_can_delete_own_comment_reply_in_followed_user_public_post(self):1324 """1325 should be able to delete own comment reply in a followed user public post and return 2001326 """1327 user = make_user()1328 user_to_follow = make_user()1329 user.follow_user_with_id(user_to_follow.pk)1330 post = user_to_follow.create_public_post(text=make_fake_post_text())1331 post_comment_text = make_fake_post_comment_text()1332 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)1333 post_comment_reply = user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1334 post_uuid=post.uuid,1335 text=make_fake_post_comment_text())1336 url = self._get_url(post_comment=post_comment_reply, post=post)1337 headers = make_authentication_headers_for_user(user)1338 response = self.client.delete(url, **headers)1339 self.assertEqual(response.status_code, status.HTTP_200_OK)1340 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 0)1341 def test_cannot_delete_foreign_comment_reply_in_followed_user_public_post(self):1342 """1343 should not be able to delete foreign comment reply in a followed user public post and return 4001344 """1345 user = make_user()1346 user_to_follow = make_user()1347 user.follow_user_with_id(user_to_follow.pk)1348 foreign_user = make_user()1349 post = user_to_follow.create_public_post(text=make_fake_post_text())1350 post_comment_text = make_fake_post_comment_text()1351 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)1352 post_comment_reply = foreign_user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1353 post_uuid=post.uuid,1354 text=make_fake_post_comment_text())1355 url = self._get_url(post_comment=post_comment_reply, post=post)1356 headers = make_authentication_headers_for_user(user)1357 response = self.client.delete(url, **headers)1358 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1359 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 1)1360 def test_cannot_delete_foreign_comment_reply_in_folowed_user_encircled_post(self):1361 """1362 should not be able to delete foreign comment reply in a followed user encircled post and return 4001363 """1364 user = make_user()1365 user_to_follow = make_user()1366 circle = make_circle(creator=user_to_follow)1367 user.follow_user_with_id(user_to_follow.pk)1368 foreign_user = make_user()1369 foreign_user.connect_with_user_with_id(user_to_follow.pk)1370 user_to_follow.confirm_connection_with_user_with_id(foreign_user.pk, circles_ids=[circle.pk])1371 post = user_to_follow.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])1372 post_comment_text = make_fake_post_comment_text()1373 post_comment = foreign_user.comment_post_with_id(post.pk, text=post_comment_text)1374 post_comment_reply = foreign_user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1375 post_uuid=post.uuid,1376 text=make_fake_post_comment_text())1377 url = self._get_url(post_comment=post_comment_reply, post=post)1378 headers = make_authentication_headers_for_user(user)1379 response = self.client.delete(url, **headers)1380 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1381 self.assertTrue(PostComment.objects.filter(id=post_comment_reply.pk).count() == 1)1382 def test_post_comment_reply_notification_is_deleted_when_deleting_comment(self):1383 """1384 should delete the post comment reply notification when a post comment is deleted1385 """1386 user = make_user()1387 commenter = make_user()1388 post = user.create_public_post(text=make_fake_post_text())1389 post_comment_text = make_fake_post_comment_text()1390 post_comment = user.comment_post_with_id(post.pk, text=post_comment_text)1391 post_comment_reply = commenter.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1392 post_uuid=post.uuid,1393 text=make_fake_post_comment_text())1394 post_comment_reply_notification = PostCommentReplyNotification.objects.get(post_comment=post_comment_reply,1395 notification__owner=user)1396 notification = Notification.objects.get(notification_type=Notification.POST_COMMENT_REPLY,1397 object_id=post_comment_reply_notification.pk)1398 url = self._get_url(post_comment=post_comment_reply, post=post)1399 headers = make_authentication_headers_for_user(commenter)1400 self.client.delete(url, **headers)1401 self.assertFalse(PostCommentReplyNotification.objects.filter(pk=post_comment_reply_notification.pk).exists())1402 self.assertFalse(Notification.objects.filter(pk=notification.pk).exists())1403 def test_can_edit_own_post_comment_reply_on_own_post(self):1404 """1405 should be able to edit own post comment reply1406 """1407 user = make_user()1408 post = user.create_public_post(text=make_fake_post_text())1409 post_comment = user.comment_post_with_id(post.pk, text=make_fake_post_comment_text())1410 post_comment_reply = user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1411 post_uuid=post.uuid,1412 text=make_fake_post_comment_text())1413 url = self._get_url(post_comment=post_comment_reply, post=post)1414 edited_comment_reply_text = make_fake_post_comment_text()1415 headers = make_authentication_headers_for_user(user)1416 response = self.client.patch(url, {1417 'text': edited_comment_reply_text1418 }, **headers)1419 self.assertEqual(response.status_code, status.HTTP_200_OK)1420 post_comment_reply.refresh_from_db()1421 self.assertTrue(post_comment_reply.text == edited_comment_reply_text)1422 self.assertTrue(post_comment_reply.is_edited)1423 def test_can_edit_own_post_comment_reply_on_others_post_comment(self):1424 """1425 should be able to edit own post comment reply on someone else's post comment1426 """1427 user = make_user()1428 post_creator = make_user()1429 post = post_creator.create_public_post(text=make_fake_post_text())1430 post_comment = post_creator.comment_post_with_id(post.pk, text=make_fake_post_comment_text())1431 post_comment_reply = user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1432 post_uuid=post.uuid,1433 text=make_fake_post_comment_text())1434 url = self._get_url(post_comment=post_comment_reply, post=post)1435 edited_post_comment_reply_text = make_fake_post_comment_text()1436 headers = make_authentication_headers_for_user(user)1437 response = self.client.patch(url, {1438 'text': edited_post_comment_reply_text1439 }, **headers)1440 self.assertEqual(response.status_code, status.HTTP_200_OK)1441 post_comment_reply.refresh_from_db()1442 self.assertTrue(post_comment_reply.text == edited_post_comment_reply_text)1443 def test_cannot_edit_others_post_comment_reply(self):1444 """1445 should not be able to edit someone else's comment reply1446 """1447 user = make_user()1448 commenter = make_user()1449 post = user.create_public_post(text=make_fake_post_text())1450 original_post_comment_reply_text = make_fake_post_comment_text()1451 post_comment = commenter.comment_post_with_id(post.pk, text=make_fake_post_comment_text())1452 post_comment_reply = commenter.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1453 post_uuid=post.uuid,1454 text=original_post_comment_reply_text)1455 url = self._get_url(post_comment=post_comment_reply, post=post)1456 edited_post_comment_reply_text = make_fake_post_comment_text()1457 headers = make_authentication_headers_for_user(user)1458 response = self.client.patch(url, {1459 'text': edited_post_comment_reply_text1460 }, **headers)1461 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1462 post_comment_reply.refresh_from_db()1463 self.assertTrue(post_comment_reply.text == original_post_comment_reply_text)1464 self.assertFalse(post_comment_reply.is_edited)1465 def test_cannot_edit_post_comment_reply_if_comments_disabled(self):1466 """1467 should not be able to edit own comment reply if comments are disabled1468 """1469 admin = make_user()1470 user = make_user()1471 community = make_community(admin)1472 user.join_community_with_name(community_name=community.name)1473 post = user.create_community_post(community.name, text=make_fake_post_text())1474 original_post_comment_reply_text = make_fake_post_comment_text()1475 post_comment = user.comment_post_with_id(post.pk, text=make_fake_post_comment_text())1476 post_comment_reply = user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1477 post_uuid=post.uuid,1478 text=original_post_comment_reply_text)1479 post.comments_enabled = False1480 post.save()1481 url = self._get_url(post_comment=post_comment_reply, post=post)1482 edited_post_comment_reply_text = make_fake_post_comment_text()1483 headers = make_authentication_headers_for_user(user)1484 response = self.client.patch(url, {1485 'text': edited_post_comment_reply_text1486 }, **headers)1487 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1488 post_comment_reply.refresh_from_db()1489 self.assertTrue(post_comment_reply.text == original_post_comment_reply_text)1490 self.assertFalse(post_comment_reply.is_edited)1491 def test_cannot_edit_post_comment_reply_if_post_closed_and_not_not_post_creator(self):1492 """1493 should NOT be able to edit own comment reply if post is closed and not post creator1494 """1495 admin = make_user()1496 user = make_user()1497 community = make_community(admin)1498 user.join_community_with_name(community_name=community.name)1499 post = admin.create_community_post(community.name, text=make_fake_post_text())1500 original_post_comment_reply_text = make_fake_post_comment_text()1501 post_comment = user.comment_post_with_id(post.pk, text=make_fake_post_comment_text())1502 post_comment_reply = user.reply_to_comment_with_id_for_post_with_uuid(post_comment_id=post_comment.pk,1503 post_uuid=post.uuid,1504 text=original_post_comment_reply_text)1505 post.is_closed = True1506 post.save()1507 url = self._get_url(post_comment=post_comment_reply, post=post)1508 edited_post_comment_reply_text = make_fake_post_comment_text()1509 headers = make_authentication_headers_for_user(user)1510 response = self.client.patch(url, {1511 'text': edited_post_comment_reply_text1512 }, **headers)1513 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1514 post_comment_reply.refresh_from_db()1515 self.assertTrue(post_comment_reply.text == original_post_comment_reply_text)1516 self.assertFalse(post_comment_reply.is_edited)1517 def _get_url(self, post, post_comment):1518 return reverse('post-comment', kwargs={1519 'post_uuid': post.uuid,1520 'post_comment_id': post_comment.pk1521 })1522class MutePostCommentAPITests(OpenbookAPITestCase):1523 """1524 MutePostCommentAPI1525 """1526 fixtures = [1527 'openbook_circles/fixtures/circles.json'1528 ]1529 def test_can_mute_own_post_comment(self):1530 """1531 should be able to mute own post comment and return 2001532 """1533 user = make_user()1534 headers = make_authentication_headers_for_user(user)1535 post = user.create_public_post(text=make_fake_post_text())1536 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())1537 url = self._get_url(post=post, post_comment=post_comment)1538 response = self.client.post(url, **headers)1539 self.assertEqual(response.status_code, status.HTTP_200_OK)1540 self.assertTrue(user.has_muted_post_comment_with_id(post_comment.pk))1541 def test_cant_mute_own_post_comment_if_already_muted(self):1542 """1543 should not be able to mute own post comment if already muted and return 4001544 """1545 user = make_user()1546 headers = make_authentication_headers_for_user(user)1547 post = user.create_public_post(text=make_fake_post_text())1548 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())1549 url = self._get_url(post=post, post_comment=post_comment)1550 user.mute_post_comment_with_id(post_comment.pk)1551 response = self.client.post(url, **headers)1552 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1553 self.assertTrue(user.has_muted_post_comment_with_id(post_comment.pk))1554 def test_can_mute_foreign_post_comment_if_public_post_comment(self):1555 user = make_user()1556 foreign_user = make_user()1557 headers = make_authentication_headers_for_user(user)1558 post = foreign_user.create_public_post(text=make_fake_post_text())1559 post_comment = foreign_user.comment_post(post=post, text=make_fake_post_comment_text())1560 url = self._get_url(post=post, post_comment=post_comment)1561 response = self.client.post(url, **headers)1562 self.assertEqual(response.status_code, status.HTTP_200_OK)1563 self.assertTrue(user.has_muted_post_comment_with_id(post_comment.pk))1564 def test_cannot_mute_foreign_post_comment_if_encircled_post(self):1565 user = make_user()1566 foreign_user = make_user()1567 headers = make_authentication_headers_for_user(user)1568 circle = make_circle(creator=foreign_user)1569 post = foreign_user.create_encircled_post(text=make_fake_post_text(),1570 circles_ids=[circle.pk])1571 post_comment = foreign_user.comment_post(post=post, text=make_fake_post_comment_text())1572 url = self._get_url(post=post, post_comment=post_comment)1573 response = self.client.post(url, **headers)1574 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1575 self.assertFalse(user.has_muted_post_comment_with_id(post_comment.pk))1576 def test_can_mute_foreign_post_comment_if_part_of_encircled_post_comment(self):1577 user = make_user()1578 foreign_user = make_user()1579 headers = make_authentication_headers_for_user(user)1580 circle = make_circle(creator=foreign_user)1581 post = foreign_user.create_encircled_post(text=make_fake_post_text(),1582 circles_ids=[circle.pk])1583 post_comment = foreign_user.comment_post(post=post, text=make_fake_post_comment_text())1584 foreign_user.connect_with_user_with_id(user_id=user.pk, circles_ids=[circle.pk])1585 user.confirm_connection_with_user_with_id(user_id=foreign_user.pk)1586 url = self._get_url(post=post, post_comment=post_comment)1587 response = self.client.post(url, **headers)1588 self.assertEqual(response.status_code, status.HTTP_200_OK)1589 self.assertTrue(user.has_muted_post_comment_with_id(post_comment.pk))1590 def test_can_mute_community_post_comment_if_public(self):1591 user = make_user()1592 foreign_user = make_user()1593 community = make_community(creator=foreign_user)1594 headers = make_authentication_headers_for_user(user)1595 post = foreign_user.create_community_post(text=make_fake_post_text(),1596 community_name=community.name)1597 post_comment = foreign_user.comment_post(post=post, text=make_fake_post_comment_text())1598 url = self._get_url(post=post, post_comment=post_comment)1599 response = self.client.post(url, **headers)1600 self.assertEqual(response.status_code, status.HTTP_200_OK)1601 self.assertTrue(user.has_muted_post_comment_with_id(post_comment.pk))1602 def test_can_mute_closed_community_post_comment(self):1603 """1604 should be able to mute closed post comment if not admin/mod or post comment creator in community1605 """1606 user = make_user()1607 foreign_user = make_user()1608 community = make_community(creator=foreign_user)1609 user.join_community_with_name(community_name=community.name)1610 headers = make_authentication_headers_for_user(user)1611 post = foreign_user.create_community_post(text=make_fake_post_text(),1612 community_name=community.name)1613 post_comment = foreign_user.comment_post(post=post, text=make_fake_post_comment_text())1614 post_comment.is_closed = True1615 post_comment.save()1616 url = self._get_url(post=post, post_comment=post_comment)1617 response = self.client.post(url, **headers)1618 self.assertEqual(status.HTTP_200_OK, response.status_code)1619 self.assertTrue(user.has_muted_post_comment_with_id(post_comment.pk))1620 def test_can_mute_closed_community_post_comment_if_creator(self):1621 """1622 should be able to mute closed post comment if post_comment creator in community1623 """1624 user = make_user()1625 foreign_user = make_user()1626 community = make_community(creator=foreign_user)1627 user.join_community_with_name(community_name=community.name)1628 headers = make_authentication_headers_for_user(user)1629 post = user.create_community_post(text=make_fake_post_text(),1630 community_name=community.name)1631 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())1632 post_comment.is_closed = True1633 post_comment.save()1634 url = self._get_url(post=post, post_comment=post_comment)1635 response = self.client.post(url, **headers)1636 self.assertEqual(response.status_code, status.HTTP_200_OK)1637 self.assertTrue(user.has_muted_post_comment_with_id(post_comment.pk))1638 def test_can_mute_closed_community_post_comment_administrator(self):1639 """1640 should be able to mute closed post comment if administrator in community1641 """1642 user = make_user()1643 admin = make_user()1644 community = make_community(creator=admin)1645 user.join_community_with_name(community_name=community.name)1646 headers = make_authentication_headers_for_user(admin)1647 post = user.create_community_post(text=make_fake_post_text(),1648 community_name=community.name)1649 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())1650 post_comment.is_closed = True1651 post_comment.save()1652 url = self._get_url(post=post, post_comment=post_comment)1653 response = self.client.post(url, **headers)1654 self.assertEqual(response.status_code, status.HTTP_200_OK)1655 self.assertTrue(admin.has_muted_post_comment_with_id(post_comment.pk))1656 def test_can_mute_closed_community_post_comment_if_moderator(self):1657 """1658 should be able to mute closed post comment if moderator in community1659 """1660 user = make_user()1661 admin = make_user()1662 moderator = make_user()1663 community = make_community(creator=admin)1664 user.join_community_with_name(community_name=community.name)1665 moderator.join_community_with_name(community_name=community.name)1666 admin.add_moderator_with_username_to_community_with_name(username=moderator.username,1667 community_name=community.name)1668 headers = make_authentication_headers_for_user(moderator)1669 post = user.create_community_post(text=make_fake_post_text(),1670 community_name=community.name)1671 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())1672 post_comment.is_closed = True1673 post_comment.save()1674 url = self._get_url(post=post, post_comment=post_comment)1675 response = self.client.post(url, **headers)1676 self.assertEqual(response.status_code, status.HTTP_200_OK)1677 self.assertTrue(moderator.has_muted_post_comment_with_id(post_comment.pk))1678 def test_cant_mute_community_post_comment_if_private_and_not_member(self):1679 user = make_user()1680 foreign_user = make_user()1681 community = make_community(creator=foreign_user, type='T')1682 headers = make_authentication_headers_for_user(user)1683 post = foreign_user.create_community_post(text=make_fake_post_text(),1684 community_name=community.name)1685 post_comment = foreign_user.comment_post(post=post, text=make_fake_post_comment_text())1686 url = self._get_url(post=post, post_comment=post_comment)1687 response = self.client.post(url, **headers)1688 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1689 self.assertFalse(user.has_muted_post_comment_with_id(post_comment.pk))1690 def test_can_mute_community_post_comment_if_private_and_member(self):1691 user = make_user()1692 foreign_user = make_user()1693 community = make_community(creator=foreign_user, type='T')1694 headers = make_authentication_headers_for_user(user)1695 post = foreign_user.create_community_post(text=make_fake_post_text(),1696 community_name=community.name)1697 post_comment = foreign_user.comment_post(post=post, text=make_fake_post_comment_text())1698 foreign_user.invite_user_with_username_to_community_with_name(username=user.username,1699 community_name=community.name)1700 user.join_community_with_name(community_name=community.name)1701 url = self._get_url(post=post, post_comment=post_comment)1702 response = self.client.post(url, **headers)1703 self.assertEqual(response.status_code, status.HTTP_200_OK)1704 self.assertTrue(user.has_muted_post_comment_with_id(post_comment.pk))1705 def _get_url(self, post, post_comment):1706 return reverse('mute-post-comment', kwargs={1707 'post_uuid': post.uuid,1708 'post_comment_id': post_comment.id,1709 })1710class UnmutePostCommentAPITests(OpenbookAPITestCase):1711 """1712 UnmutePostCommentAPI1713 """1714 fixtures = [1715 'openbook_circles/fixtures/circles.json'1716 ]1717 def test_can_unmute_own_post_comment(self):1718 """1719 should be able to unmute own post comment and return 2001720 """1721 user = make_user()1722 headers = make_authentication_headers_for_user(user)1723 post = user.create_public_post(text=make_fake_post_text())1724 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())1725 user.mute_post_comment_with_id(post_comment.pk)1726 url = self._get_url(post=post, post_comment=post_comment)1727 response = self.client.post(url, **headers)1728 self.assertEqual(response.status_code, status.HTTP_200_OK)1729 self.assertFalse(user.has_muted_post_comment_with_id(post_comment.pk))1730 def test_cant_unmute_own_post_comment_if_already_unmuted(self):1731 """1732 should not be able to unmute own post comment if already unmuted and return 4001733 """1734 user = make_user()1735 headers = make_authentication_headers_for_user(user)1736 post = user.create_public_post(text=make_fake_post_text())1737 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())1738 url = self._get_url(post=post, post_comment=post_comment)1739 response = self.client.post(url, **headers)1740 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)1741 self.assertFalse(user.has_muted_post_comment_with_id(post_comment.pk))1742 def test_can_unmute_closed_community_post_comment(self):1743 """1744 should be able to unmute closed post comment if not admin/mod or post comment creator in community1745 """1746 user = make_user()1747 foreign_user = make_user()1748 community = make_community(creator=foreign_user)1749 user.join_community_with_name(community_name=community.name)1750 headers = make_authentication_headers_for_user(user)1751 post = foreign_user.create_community_post(text=make_fake_post_text(),1752 community_name=community.name)1753 post_comment = foreign_user.comment_post(post=post, text=make_fake_post_comment_text())1754 user.mute_post_comment_with_id(post_comment.pk)1755 post_comment.is_closed = True1756 post_comment.save()...
test_post_comment_reactions.py
Source:test_post_comment_reactions.py
...22 """23 fixtures = [24 'openbook_circles/fixtures/circles.json'25 ]26 def test_can_react_to_own_post_comment(self):27 """28 should be able to react in own post comment and return 20129 """30 user = make_user()31 headers = make_authentication_headers_for_user(user)32 post = user.create_public_post(text=make_fake_post_text())33 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())34 emoji_group = make_reactions_emoji_group()35 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk36 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)37 url = self._get_url(post=post, post_comment=post_comment)38 response = self.client.put(url, data, **headers)39 self.assertEqual(status.HTTP_201_CREATED, response.status_code)40 self.assertTrue(41 PostCommentReaction.objects.filter(post_comment_id=post_comment.pk, emoji_id=post_comment_reaction_emoji_id,42 reactor_id=user.pk).count() == 1)43 def test_can_react_to_post_comment_reply(self):44 """45 should be able to react to post comment reply and return 20146 """47 user = make_user()48 headers = make_authentication_headers_for_user(user)49 post = user.create_public_post(text=make_fake_post_text())50 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())51 post_comment_reply = user.reply_to_comment_for_post(post=post, post_comment=post_comment,52 text=make_fake_post_comment_text())53 emoji_group = make_reactions_emoji_group()54 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk55 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)56 url = self._get_url(post=post, post_comment=post_comment_reply)57 response = self.client.put(url, data, **headers)58 self.assertEqual(status.HTTP_201_CREATED, response.status_code)59 self.assertTrue(60 PostCommentReaction.objects.filter(post_comment_id=post_comment_reply.pk,61 emoji_id=post_comment_reaction_emoji_id,62 reactor_id=user.pk).count() == 1)63 def test_cannot_react_to_foreign_encircled_post_comment(self):64 """65 should not be able to react in a foreign encircled post comment and return 40066 """67 user = make_user()68 headers = make_authentication_headers_for_user(user)69 foreign_user = make_user()70 circle = make_circle(creator=foreign_user)71 post = foreign_user.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])72 post_comment = foreign_user.comment_post(post=post, text=make_fake_post_comment_text())73 emoji_group = make_reactions_emoji_group()74 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk75 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)76 url = self._get_url(post=post, post_comment=post_comment)77 response = self.client.put(url, data, **headers)78 self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code)79 self.assertTrue(80 PostCommentReaction.objects.filter(post_comment_id=post_comment.pk, emoji_id=post_comment_reaction_emoji_id,81 reactor_id=user.pk).count() == 0)82 def test_cannot_react_to_foreign_post_comment_with_non_reaction_emoji(self):83 """84 should not be able to react in a post comment with a non reaction emoji group and return 40085 """86 user = make_user()87 headers = make_authentication_headers_for_user(user)88 post = user.create_public_post(text=make_fake_post_text())89 post_comment = user.comment_post(post=post, text=make_fake_post_comment_text())90 emoji_group = make_emoji_group()91 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk92 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)93 url = self._get_url(post=post, post_comment=post_comment)94 response = self.client.put(url, data, **headers)95 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)96 self.assertTrue(97 PostCommentReaction.objects.filter(post_comment_id=post_comment.pk, emoji_id=post_comment_reaction_emoji_id,98 reactor_id=user.pk).count() == 0)99 def test_can_react_to_connected_user_public_post_comment(self):100 """101 should be able to react in the public post comment of a connected user post and return 201102 """103 user = make_user()104 headers = make_authentication_headers_for_user(user)105 user_to_connect = make_user()106 user.connect_with_user_with_id(user_to_connect.pk)107 connected_user_post = user_to_connect.create_public_post(text=make_fake_post_text())108 connected_user_post_comment = user_to_connect.comment_post(post=connected_user_post,109 text=make_fake_post_comment_text())110 emoji_group = make_reactions_emoji_group()111 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk112 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)113 url = self._get_url(post=connected_user_post, post_comment=connected_user_post_comment)114 response = self.client.put(url, data, **headers)115 self.assertEqual(response.status_code, status.HTTP_201_CREATED)116 self.assertTrue(117 PostCommentReaction.objects.filter(post_comment_id=connected_user_post_comment.pk,118 emoji_id=post_comment_reaction_emoji_id,119 reactor_id=user.pk).count() == 1)120 def test_can_react_to_connected_user_encircled_post_comment_part_of(self):121 """122 should be able to react in the encircled post comment of a connected user which the user is part of and return 201123 """124 user = make_user()125 headers = make_authentication_headers_for_user(user)126 user_to_connect = make_user()127 circle = make_circle(creator=user_to_connect)128 user.connect_with_user_with_id(user_to_connect.pk)129 user_to_connect.confirm_connection_with_user_with_id(user.pk, circles_ids=[circle.pk])130 connected_user_post = user_to_connect.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])131 connected_user_post_comment = user_to_connect.comment_post(post=connected_user_post,132 text=make_fake_post_comment_text())133 emoji_group = make_reactions_emoji_group()134 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk135 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)136 url = self._get_url(post=connected_user_post, post_comment=connected_user_post_comment)137 response = self.client.put(url, data, **headers)138 self.assertEqual(response.status_code, status.HTTP_201_CREATED)139 self.assertTrue(140 PostCommentReaction.objects.filter(post_comment_id=connected_user_post.pk,141 emoji_id=post_comment_reaction_emoji_id,142 reactor_id=user.pk).count() == 1)143 def test_cannot_react_to_connected_user_encircled_post_comment_not_part_of(self):144 """145 should NOT be able to react in the encircled post comment of a connected user which the user is NOT part of and return 400146 """147 user = make_user()148 headers = make_authentication_headers_for_user(user)149 user_to_connect = make_user()150 circle = make_circle(creator=user_to_connect)151 user.connect_with_user_with_id(user_to_connect.pk)152 # Note there is no confirmation of the connection on the other side153 connected_user_post = user_to_connect.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])154 connected_user_post_comment = user_to_connect.comment_post(post=connected_user_post,155 text=make_fake_post_comment_text())156 emoji_group = make_reactions_emoji_group()157 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk158 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)159 url = self._get_url(post=connected_user_post, post_comment=connected_user_post_comment)160 response = self.client.put(url, data, **headers)161 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)162 self.assertTrue(163 PostCommentReaction.objects.filter(post_comment_id=connected_user_post.pk,164 emoji_id=post_comment_reaction_emoji_id,165 reactor_id=user.pk).count() == 0)166 def test_can_react_to_user_public_post_comment(self):167 """168 should be able to react in the public post comment of any user and return 201169 """170 user = make_user()171 headers = make_authentication_headers_for_user(user)172 foreign_user = make_user()173 foreign_user_post = foreign_user.create_public_post(text=make_fake_post_text())174 foreign_user_post_comment = foreign_user.comment_post(post=foreign_user_post,175 text=make_fake_post_comment_text())176 emoji_group = make_reactions_emoji_group()177 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk178 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)179 url = self._get_url(post=foreign_user_post, post_comment=foreign_user_post_comment)180 response = self.client.put(url, data, **headers)181 self.assertEqual(response.status_code, status.HTTP_201_CREATED)182 self.assertTrue(183 PostCommentReaction.objects.filter(post_comment_id=foreign_user_post.pk,184 emoji_id=post_comment_reaction_emoji_id,185 reactor_id=user.pk).count() == 1)186 def test_cannot_react_to_followed_user_encircled_post_comment(self):187 """188 should be able to react in the encircled post comment of a followed user return 400189 """190 user = make_user()191 headers = make_authentication_headers_for_user(user)192 user_to_follow = make_user()193 circle = make_circle(creator=user_to_follow)194 user.follow_user_with_id(user_to_follow.pk)195 followed_user_post = user_to_follow.create_encircled_post(text=make_fake_post_text(), circles_ids=[circle.pk])196 followed_user_post_comment = user_to_follow.comment_post(post=followed_user_post,197 text=make_fake_post_comment_text())198 emoji_group = make_reactions_emoji_group()199 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk200 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)201 url = self._get_url(post=followed_user_post, post_comment=followed_user_post_comment)202 response = self.client.put(url, data, **headers)203 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)204 self.assertTrue(205 PostCommentReaction.objects.filter(post_comment_id=followed_user_post.pk,206 emoji_id=post_comment_reaction_emoji_id,207 reactor_id=user.pk).count() == 0)208 def test_cannot_react_in_post_comment_from_community_banned_from(self):209 """210 should not be able to react in the post comment of a community banned from and return 400211 """212 user = make_user()213 headers = make_authentication_headers_for_user(user)214 community_owner = make_user()215 community = make_community(creator=community_owner)216 user.join_community_with_name(community_name=community.name)217 post = community_owner.create_community_post(community_name=community.name, text=make_fake_post_text())218 post_comment = community_owner.comment_post(post=post,219 text=make_fake_post_comment_text())220 community_owner.ban_user_with_username_from_community_with_name(username=user.username,221 community_name=community.name)222 emoji_group = make_reactions_emoji_group()223 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk224 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)225 url = self._get_url(post=post, post_comment=post_comment)226 response = self.client.put(url, data, **headers)227 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)228 self.assertTrue(229 PostCommentReaction.objects.filter(post_comment_id=post_comment.pk, emoji_id=post_comment_reaction_emoji_id,230 reactor_id=user.pk).count() == 0)231 def test_cannot_react_to_closed_community_post_comment_if_not_creator(self):232 """233 should NOT be able to react in a closed community post comment if not creator234 """235 user = make_user()236 admin = make_user()237 community = make_community(admin)238 headers = make_authentication_headers_for_user(user)239 post_creator = make_user()240 post_creator.join_community_with_name(community_name=community.name)241 user.join_community_with_name(community_name=community.name)242 community_post = post_creator.create_community_post(community_name=community.name,243 text=make_fake_post_comment_text())244 community_post_comment = post_creator.comment_post(post=community_post,245 text=make_fake_post_comment_text())246 community_post.is_closed = True247 community_post.save()248 emoji_group = make_reactions_emoji_group()249 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk250 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)251 url = self._get_url(post=community_post, post_comment=community_post_comment)252 response = self.client.put(url, data, **headers)253 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)254 self.assertTrue(255 PostCommentReaction.objects.filter(post_comment_id=community_post_comment.pk,256 emoji_id=post_comment_reaction_emoji_id,257 reactor_id=user.pk).count() == 0)258 def test_cannot_react_to_closed_community_post_comment_if_creator(self):259 """260 should NOT be able to react in a closed community post comment if creator261 """262 user = make_user()263 admin = make_user()264 community = make_community(admin)265 post_creator = make_user()266 post_creator.join_community_with_name(community_name=community.name)267 user.join_community_with_name(community_name=community.name)268 community_post = post_creator.create_community_post(community_name=community.name,269 text=make_fake_post_comment_text())270 community_post_comment = post_creator.comment_post(post=community_post,271 text=make_fake_post_comment_text())272 community_post.is_closed = True273 community_post.save()274 emoji_group = make_reactions_emoji_group()275 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk276 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)277 headers = make_authentication_headers_for_user(post_creator)278 url = self._get_url(post=community_post, post_comment=community_post_comment)279 response = self.client.put(url, data, **headers)280 self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code)281 self.assertTrue(282 PostCommentReaction.objects.filter(post_comment_id=community_post_comment.pk,283 emoji_id=post_comment_reaction_emoji_id,284 reactor_id=post_creator.pk).count() == 0)285 def test_cannot_react_to_blocked_user_post_comment(self):286 """287 should not be able to react to a blocked user post comment and return 400288 """289 user = make_user()290 headers = make_authentication_headers_for_user(user)291 user_to_block = make_user()292 user.follow_user_with_id(user_to_block.pk)293 post = user_to_block.create_public_post(text=make_fake_post_text())294 post_comment = user_to_block.comment_post(post=post,295 text=make_fake_post_comment_text())296 user.block_user_with_id(user_id=user_to_block.pk)297 emoji_group = make_reactions_emoji_group()298 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk299 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)300 url = self._get_url(post=post, post_comment=post_comment)301 response = self.client.put(url, data, **headers)302 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)303 self.assertTrue(304 PostCommentReaction.objects.filter(post_comment_id=post_comment.pk, emoji_id=post_comment_reaction_emoji_id,305 reactor_id=user.pk).count() == 0)306 def test_cannot_react_to_blocking_user_post_comment(self):307 """308 should not be able to react to a blocking user post comment and return 400309 """310 user = make_user()311 headers = make_authentication_headers_for_user(user)312 blocking_user = make_user()313 user.follow_user_with_id(blocking_user.pk)314 post = blocking_user.create_public_post(text=make_fake_post_text())315 post_comment = blocking_user.comment_post_with_id(post_id=post.pk, text=make_fake_post_comment_text())316 blocking_user.block_user_with_id(user_id=user.pk)317 emoji_group = make_reactions_emoji_group()318 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk319 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)320 url = self._get_url(post=post, post_comment=post_comment)321 response = self.client.put(url, data, **headers)322 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)323 self.assertTrue(324 PostCommentReaction.objects.filter(post_comment_id=post_comment.pk, emoji_id=post_comment_reaction_emoji_id,325 reactor_id=user.pk).count() == 0)326 def test_cannot_react_to_blocked_user_community_post_comment(self):327 """328 should not be able to react to a blocked user community post comment and return 400329 """330 user = make_user()331 headers = make_authentication_headers_for_user(user)332 community_owner = make_user()333 community = make_community(creator=community_owner)334 user_to_block = make_user()335 user_to_block.join_community_with_name(community_name=community.name)336 post = user_to_block.create_community_post(community_name=community.name, text=make_fake_post_text())337 post_comment = user_to_block.comment_post_with_id(post_id=post.pk, text=make_fake_post_comment_text())338 user.block_user_with_id(user_id=user_to_block.pk)339 emoji_group = make_reactions_emoji_group()340 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk341 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)342 url = self._get_url(post=post, post_comment=post_comment)343 response = self.client.put(url, data, **headers)344 self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code)345 self.assertTrue(346 PostCommentReaction.objects.filter(post_comment_id=post_comment.pk, emoji_id=post_comment_reaction_emoji_id,347 reactor_id=user.pk).count() == 0)348 def test_cannot_react_to_blocking_user_community_post_comment(self):349 """350 should not be able to react to a blocking user community post comment and return 400351 """352 user = make_user()353 headers = make_authentication_headers_for_user(user)354 community_owner = make_user()355 community = make_community(creator=community_owner)356 blocking_user = make_user()357 blocking_user.join_community_with_name(community_name=community.name)358 post = blocking_user.create_community_post(community_name=community.name, text=make_fake_post_text())359 post_comment = blocking_user.comment_post_with_id(post_id=post.pk, text=make_fake_post_comment_text())360 blocking_user.block_user_with_id(user_id=user.pk)361 emoji_group = make_reactions_emoji_group()362 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk363 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)364 url = self._get_url(post=post, post_comment=post_comment)365 response = self.client.put(url, data, **headers)366 self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code)367 self.assertTrue(368 PostCommentReaction.objects.filter(post_comment_id=post_comment.pk, emoji_id=post_comment_reaction_emoji_id,369 reactor_id=user.pk).count() == 0)370 def test_can_react_to_blocked_community_staff_member_post_comment(self):371 """372 should be able to react to a blocked community staff member post comment and return 201373 """374 user = make_user()375 headers = make_authentication_headers_for_user(user)376 community_owner = make_user()377 community = make_community(creator=community_owner)378 post = community_owner.create_community_post(community_name=community.name, text=make_fake_post_text())379 post_comment = community_owner.comment_post_with_id(post_id=post.pk, text=make_fake_post_comment_text())380 user.block_user_with_id(user_id=community_owner.pk)381 emoji_group = make_reactions_emoji_group()382 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk383 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)384 url = self._get_url(post=post, post_comment=post_comment)385 response = self.client.put(url, data, **headers)386 self.assertEqual(response.status_code, status.HTTP_201_CREATED)387 self.assertTrue(388 PostCommentReaction.objects.filter(post_comment_id=post_comment.pk, emoji_id=post_comment_reaction_emoji_id,389 reactor_id=user.pk).count() == 1)390 def test_can_react_to_blocking_community_staff_member_post_comment(self):391 """392 should be able to react to a blocking community staff member post comment and return 201393 """394 user = make_user()395 headers = make_authentication_headers_for_user(user)396 community_owner = make_user()397 community = make_community(creator=community_owner)398 post = community_owner.create_community_post(community_name=community.name, text=make_fake_post_text())399 post_comment = user.comment_post_with_id(post_id=post.pk, text=make_fake_post_comment_text())400 community_owner.block_user_with_id(user_id=user.pk)401 emoji_group = make_reactions_emoji_group()402 post_comment_reaction_emoji_id = make_emoji(group=emoji_group).pk403 data = self._get_create_post_comment_reaction_request_data(post_comment_reaction_emoji_id)404 url = self._get_url(post=post, post_comment=post_comment)...
post_comment.py
Source:post_comment.py
...32 request_user = request.user33 if request_user.is_anonymous:34 replies_count = post_comment.count_replies()35 else:36 replies_count = request_user.get_replies_count_for_post_comment(post_comment=post_comment)37 return replies_count38class PostCommentReactionsEmojiCountField(Field):39 def __init__(self, emoji_count_serializer=None, **kwargs):40 kwargs['source'] = '*'41 kwargs['read_only'] = True42 self.emoji_count_serializer = emoji_count_serializer43 super(PostCommentReactionsEmojiCountField, self).__init__(**kwargs)44 def to_representation(self, post_comment):45 request = self.context.get('request')46 request_user = request.user47 if request_user.is_anonymous:48 PostComment = get_post_comment_model()49 reaction_emoji_count = PostComment.get_emoji_counts_for_post_comment_with_id(post_comment.pk)50 else:51 reaction_emoji_count = request_user.get_emoji_counts_for_post_comment(post_comment=post_comment)52 post_comment_reactions_serializer = self.emoji_count_serializer(reaction_emoji_count, many=True,53 context={"request": request,54 'post_comment': post_comment})55 return post_comment_reactions_serializer.data56class PostCommentReactionField(Field):57 def __init__(self, post_comment_reaction_serializer=None, **kwargs):58 kwargs['source'] = '*'59 kwargs['read_only'] = True60 self.comment_reaction_serializer = post_comment_reaction_serializer61 super(PostCommentReactionField, self).__init__(**kwargs)62 def to_representation(self, post_comment):63 request = self.context.get('request')64 request_user = request.user65 serialized_commentReaction = None...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!