class UnlikeViewTestCase(SiteTestCase): def set_up(self): super().set_up() self.user_1 = ActiveUserFactory() self.user_2 = ActiveUserFactory() self.page_url = '/{}/likes/unlike/'.format(self.user_2.slug) def test_user_can_unlike(self): self.client.login(username=self.user_1.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) UserLike.objects.add_like(from_user=self.user_1, to_user=self.user_2) self.assertEqual(first=UserLike.objects.count(), second=1) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.user_2.get_absolute_url(), status_code=302, target_status_code=200) self.assertEqual(first=UserLike.objects.count(), second=0) def test_user_cannot_unlike_if_doesnt_like(self): self.client.login(username=self.user_1.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) r = self.client.post(path=self.page_url) self.assertEqual(first=r.status_code, second=403) self.assertEqual(first=UserLike.objects.count(), second=0) def test_user_cannot_unlike_twice(self): self.client.login(username=self.user_1.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) UserLike.objects.add_like(from_user=self.user_1, to_user=self.user_2) self.assertEqual(first=UserLike.objects.count(), second=1) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.user_2.get_absolute_url(), status_code=302, target_status_code=200) self.assertEqual(first=UserLike.objects.count(), second=0) r = self.client.post(path=self.page_url) self.assertEqual(first=r.status_code, second=403) self.assertEqual(first=UserLike.objects.count(), second=0)
class RemoveFriendViewTestCaseMixin(SpeedyCoreFriendsLanguageMixin): def set_up(self): super().set_up() self.first_user = ActiveUserFactory() self.second_user = ActiveUserFactory() Friend.objects.add_friend(from_user=self.first_user, to_user=self.second_user).accept() self.page_url = '/{}/friends/remove/'.format(self.second_user.slug) self.opposite_url = '/{}/friends/remove/'.format(self.first_user.slug) def test_visitor_has_no_access(self): r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url='/login/?next={}'.format(self.page_url)) self.assertIsNone(obj=r.context) @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_can_remove_other_user(self): self.assertEqual(first=Friend.objects.count(), second=1 * 2) self.client.login(username=self.first_user.slug, password=tests_settings.USER_PASSWORD) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual(first=Friend.objects.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._you_have_removed_this_user_from_friends_success_message]) ###### TODO @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_other_user_can_remove_first_user(self): self.assertEqual(first=Friend.objects.count(), second=1 * 2) self.client.login(username=self.second_user.slug, password=tests_settings.USER_PASSWORD) r = self.client.post(path=self.opposite_url) self.assertRedirects(response=r, expected_url=self.first_user.get_absolute_url()) self.assertEqual(first=Friend.objects.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._you_have_removed_this_user_from_friends_success_message]) ###### TODO
class CancelFriendRequestViewTestCaseMixin(SpeedyCoreFriendsLanguageMixin): def set_up(self): super().set_up() self.first_user = ActiveUserFactory() self.second_user = ActiveUserFactory() self.page_url = '/{}/friends/request/cancel/'.format( self.second_user.slug) self.client.login(username=self.first_user.slug, password=tests_settings.USER_PASSWORD) def test_visitor_cannot_cancel_friend_request(self): self.client.logout() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url='/login/?next={}'.format( self.page_url)) self.assertIsNone(obj=r.context) def test_user_can_cancel_friend_request(self): Friend.objects.add_friend(from_user=self.first_user, to_user=self.second_user) self.assertEqual(first=FriendshipRequest.objects.count(), second=1) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url(), fetch_redirect_response=False) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[self._youve_cancelled_your_friend_request_success_message ]) #####-1 TODO
class RemoveFriendViewTestCaseMixin(SpeedyCoreFriendsLanguageMixin): def set_up(self): super().set_up() self.first_user = ActiveUserFactory() self.second_user = ActiveUserFactory() Friend.objects.add_friend(from_user=self.first_user, to_user=self.second_user).accept() self.page_url = '/{}/friends/remove/'.format(self.second_user.slug) self.opposite_url = '/{}/friends/remove/'.format(self.first_user.slug) def test_visitor_has_no_access(self): r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url='/login/?next={}'.format( self.page_url)) self.assertIsNone(obj=r.context) @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_can_remove_other_user(self): self.assertEqual(first=Friend.objects.count(), second=1 * 2) self.client.login(username=self.first_user.slug, password=tests_settings.USER_PASSWORD) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual(first=Friend.objects.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[ self._you_have_removed_this_user_from_friends_success_message ]) ###### TODO @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_other_user_can_remove_first_user(self): self.assertEqual(first=Friend.objects.count(), second=1 * 2) self.client.login(username=self.second_user.slug, password=tests_settings.USER_PASSWORD) r = self.client.post(path=self.opposite_url) self.assertRedirects(response=r, expected_url=self.first_user.get_absolute_url()) self.assertEqual(first=Friend.objects.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[ self._you_have_removed_this_user_from_friends_success_message ]) ###### TODO
class RejectFriendshipRequestViewTestCaseMixin( SpeedyCoreFriendsLanguageMixin): def set_up(self): super().set_up() self.first_user = ActiveUserFactory() self.second_user = ActiveUserFactory() friendship_request = Friend.objects.add_friend( from_user=self.first_user, to_user=self.second_user) self.page_url = '/{}/friends/request/reject/{}/'.format( self.second_user.slug, friendship_request.pk) self.second_user_friends_list_url = '/{}/friends/'.format( self.second_user.slug) def test_visitor_cannot_reject_friendship_request(self): self.client.logout() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url='/login/?next={}'.format( self.page_url), status_code=302, target_status_code=200) self.assertIsNone(obj=r.context) def test_user_cannot_reject_friendship_request_they_sent_another_user( self): self.client.login(username=self.first_user.slug, password=tests_settings.USER_PASSWORD) r = self.client.post(path=self.page_url) self.assertEqual(first=r.status_code, second=403) def test_user_that_has_received_request_can_reject_it(self): self.client.login(username=self.second_user.slug, password=tests_settings.USER_PASSWORD) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) r = self.client.post(path=self.page_url) expected_url = self.first_user.get_absolute_url() self.assertRedirects(response=r, expected_url=expected_url, status_code=302, target_status_code=200, fetch_redirect_response=False) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) self.assertEqual( first=self.second_user.friendship_requests_received.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=expected_url) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[self._friendship_request_rejected_success_message]) r = self.client.get(path=expected_url) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[])
class CancelFriendRequestViewTestCaseMixin(SpeedyCoreFriendsLanguageMixin): def set_up(self): super().set_up() self.first_user = ActiveUserFactory() self.second_user = ActiveUserFactory() self.page_url = '/{}/friends/request/cancel/'.format(self.second_user.slug) self.client.login(username=self.first_user.slug, password=tests_settings.USER_PASSWORD) def test_visitor_cannot_cancel_friend_request(self): self.client.logout() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url='/login/?next={}'.format(self.page_url)) self.assertIsNone(obj=r.context) def test_user_can_cancel_friend_request(self): Friend.objects.add_friend(from_user=self.first_user, to_user=self.second_user) self.assertEqual(first=FriendshipRequest.objects.count(), second=1) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url(), fetch_redirect_response=False) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._youve_cancelled_your_friend_request_success_message]) #####-1 TODO
class UnlikeViewTestCase(SiteTestCase): def set_up(self): super().set_up() self.user = ActiveUserFactory() self.other_user = ActiveUserFactory() self.page_url = '/{}/likes/unlike/'.format(self.other_user.slug) def test_can_unlike(self): self.client.login(username=self.user.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) UserLike.objects.create(from_user=self.user, to_user=self.other_user) self.assertEqual(first=UserLike.objects.count(), second=1) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.other_user.get_absolute_url()) self.assertEqual(first=UserLike.objects.count(), second=0)
class UnlikeViewTestCase(SiteTestCase): def set_up(self): super().set_up() self.user = ActiveUserFactory() self.other_user = ActiveUserFactory() self.page_url = '/{}/likes/unlike/'.format(self.other_user.slug) def test_can_unlike(self): self.client.login(username=self.user.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) UserLike.objects.create(from_user=self.user, to_user=self.other_user) self.assertEqual(first=UserLike.objects.count(), second=1) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.other_user.get_absolute_url()) self.assertEqual(first=UserLike.objects.count(), second=0)
class LikeViewTestCase(SiteTestCase): def set_up(self): super().set_up() self.user = ActiveUserFactory() self.other_user = ActiveUserFactory() self.page_url = '/{}/likes/like/'.format(self.other_user.slug) def test_can_like(self): self.client.login(username=self.user.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) r = self.client.post(path=self.page_url) self.assertRedirects( response=r, expected_url=self.other_user.get_absolute_url(), status_code=302, target_status_code=200) self.assertEqual(first=UserLike.objects.count(), second=1) like = UserLike.objects.first() self.assertEqual(first=like.from_user.id, second=self.user.id) self.assertEqual(first=like.to_user.id, second=self.other_user.id)
class AcceptFriendshipRequestViewTestCaseMixin( SpeedyCoreFriendsLanguageMixin): def set_up(self): super().set_up() self.first_user = ActiveUserFactory() self.second_user = ActiveUserFactory() friendship_request = Friend.objects.add_friend( from_user=self.first_user, to_user=self.second_user) self.page_url = '/{}/friends/request/accept/{}/'.format( self.second_user.slug, friendship_request.pk) self.second_user_friends_list_url = '/{}/friends/'.format( self.second_user.slug) def test_visitor_cannot_accept_friendship_request(self): self.client.logout() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url='/login/?next={}'.format( self.page_url), status_code=302, target_status_code=200) self.assertIsNone(obj=r.context) def test_user_cannot_accept_friendship_request_they_sent_another_user( self): self.client.login(username=self.first_user.slug, password=tests_settings.USER_PASSWORD) r = self.client.post(path=self.page_url) self.assertEqual(first=r.status_code, second=403) def test_user_that_has_received_request_can_accept_it(self): self.client.login(username=self.second_user.slug, password=tests_settings.USER_PASSWORD) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) r = self.client.post(path=self.page_url) expected_url = self.first_user.get_absolute_url() self.assertRedirects(response=r, expected_url=expected_url, status_code=302, target_status_code=200, fetch_redirect_response=False) self.assertTrue(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) self.assertIsNone(obj=r.context) r = self.client.get(path=expected_url) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[self._friendship_request_accepted_success_message]) r = self.client.get(path=expected_url) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[]) @override_settings( USER_SETTINGS=get_django_settings_class_with_override_settings( django_settings_class=django_settings.USER_SETTINGS, MAX_NUMBER_OF_FRIENDS_ALLOWED=tests_settings. OVERRIDE_USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)) def test_user_that_has_received_request_can_accept_it_if_not_maximum( self): self.assertEqual(first=User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED, second=4) for i in range(User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED - 1): Friend.objects.add_friend( from_user=self.second_user, to_user=ActiveUserFactory()).accept() self.client.login(username=self.second_user.slug, password=tests_settings.USER_PASSWORD) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) r = self.client.post(path=self.page_url) expected_url = self.first_user.get_absolute_url() self.assertRedirects(response=r, expected_url=expected_url, status_code=302, target_status_code=200, fetch_redirect_response=False) self.assertTrue(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) self.assertIsNone(obj=r.context) r = self.client.get(path=expected_url) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[self._friendship_request_accepted_success_message]) r = self.client.get(path=expected_url) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[]) @override_settings( USER_SETTINGS=get_django_settings_class_with_override_settings( django_settings_class=django_settings.USER_SETTINGS, MAX_NUMBER_OF_FRIENDS_ALLOWED=tests_settings. OVERRIDE_USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)) def test_user_that_has_received_request_cannot_accept_it_if_maximum( self): self.assertEqual(first=User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED, second=4) for i in range(User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED): Friend.objects.add_friend( from_user=self.second_user, to_user=ActiveUserFactory()).accept() self.client.login(username=self.second_user.slug, password=tests_settings.USER_PASSWORD) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) r = self.client.post(path=self.page_url) expected_url = self.first_user.get_absolute_url() self.assertRedirects(response=r, expected_url=expected_url, status_code=302, target_status_code=200, fetch_redirect_response=False) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) r = self.client.get(path=expected_url) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[ self. _you_already_have_friends_error_message_by_user_number_of_friends_and_gender( user_number_of_friends=4, gender=self.second_user.get_gender()) ]) r = self.client.get(path=expected_url) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[]) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) @override_settings( USER_SETTINGS=get_django_settings_class_with_override_settings( django_settings_class=django_settings.USER_SETTINGS, MAX_NUMBER_OF_FRIENDS_ALLOWED=tests_settings. OVERRIDE_USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)) def test_user_that_has_received_request_can_accept_it_if_other_not_maximum( self): self.assertEqual(first=User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED, second=4) for i in range(User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED - 1): Friend.objects.add_friend( from_user=self.first_user, to_user=ActiveUserFactory()).accept() self.client.login(username=self.second_user.slug, password=tests_settings.USER_PASSWORD) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) r = self.client.post(path=self.page_url) expected_url = self.first_user.get_absolute_url() self.assertRedirects(response=r, expected_url=expected_url, status_code=302, target_status_code=200, fetch_redirect_response=False) self.assertTrue(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) self.assertIsNone(obj=r.context) r = self.client.get(path=expected_url) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[self._friendship_request_accepted_success_message]) r = self.client.get(path=expected_url) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[]) @override_settings( USER_SETTINGS=get_django_settings_class_with_override_settings( django_settings_class=django_settings.USER_SETTINGS, MAX_NUMBER_OF_FRIENDS_ALLOWED=tests_settings. OVERRIDE_USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)) def test_user_that_has_received_request_cannot_accept_it_if_other_maximum( self): self.assertEqual(first=User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED, second=4) for i in range(User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED): Friend.objects.add_friend( from_user=self.first_user, to_user=ActiveUserFactory()).accept() self.client.login(username=self.second_user.slug, password=tests_settings.USER_PASSWORD) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) r = self.client.post(path=self.page_url) expected_url = self.first_user.get_absolute_url() self.assertRedirects(response=r, expected_url=expected_url, status_code=302, target_status_code=200, fetch_redirect_response=False) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) r = self.client.get(path=expected_url) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[ self. _this_user_already_has_friends_error_message_by_other_user_number_of_friends_and_both_genders( other_user_number_of_friends=4, both_genders=get_both_genders_context_from_users( user=self.second_user, other_user=self.first_user)) ]) r = self.client.get(path=expected_url) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[]) self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user))
class LikeViewTestCaseMixin(SpeedyCoreAccountsModelsMixin, SpeedyMatchLikesLanguageMixin): def set_up(self): super().set_up() self.user_1 = ActiveUserFactory() self.user_2 = ActiveUserFactory() self.page_url = '/{}/likes/like/'.format(self.user_2.slug) def test_user_can_like_and_other_user_gets_notified_on_like(self): self.assert_models_count( entity_count=2, user_count=2, user_email_address_count=2, confirmed_email_address_count=2, unconfirmed_email_address_count=0, ) self.user_1 = User.objects.get(pk=self.user_1.pk) self.assert_user_email_addresses_count( user=self.user_1, user_email_addresses_count=1, user_primary_email_addresses_count=1, user_confirmed_email_addresses_count=1, user_unconfirmed_email_addresses_count=0, ) self.user_2 = User.objects.get(pk=self.user_2.pk) self.assert_user_email_addresses_count( user=self.user_2, user_email_addresses_count=1, user_primary_email_addresses_count=1, user_confirmed_email_addresses_count=1, user_unconfirmed_email_addresses_count=0, ) self.assertEqual(first=len(mail.outbox), second=0) self.assertEqual(first=self.user_1.speedy_match_profile.notify_on_like, second=User.NOTIFICATIONS_ON) self.assertEqual(first=self.user_2.speedy_match_profile.notify_on_like, second=User.NOTIFICATIONS_ON) self.client.login(username=self.user_1.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.user_2.get_absolute_url(), status_code=302, target_status_code=200) self.assertEqual(first=UserLike.objects.count(), second=1) like = UserLike.objects.first() self.assertEqual(first=like.from_user.id, second=self.user_1.id) self.assertEqual(first=like.to_user.id, second=self.user_2.id) self.assertEqual(first=len(mail.outbox), second=1) self.assertEqual(first=mail.outbox[0].subject, second=self._someone_likes_you_on_speedy_match_subject_dict_by_gender[self.user_1.get_gender()]) def test_user_can_like_and_other_user_doesnt_get_notified_on_like(self): self.assert_models_count( entity_count=2, user_count=2, user_email_address_count=2, confirmed_email_address_count=2, unconfirmed_email_address_count=0, ) self.user_1 = User.objects.get(pk=self.user_1.pk) self.assert_user_email_addresses_count( user=self.user_1, user_email_addresses_count=1, user_primary_email_addresses_count=1, user_confirmed_email_addresses_count=1, user_unconfirmed_email_addresses_count=0, ) self.user_2 = User.objects.get(pk=self.user_2.pk) self.assert_user_email_addresses_count( user=self.user_2, user_email_addresses_count=1, user_primary_email_addresses_count=1, user_confirmed_email_addresses_count=1, user_unconfirmed_email_addresses_count=0, ) self.assertEqual(first=len(mail.outbox), second=0) self.user_2.speedy_match_profile.notify_on_like = User.NOTIFICATIONS_OFF self.user_2.save_user_and_profile() self.assertEqual(first=self.user_1.speedy_match_profile.notify_on_like, second=User.NOTIFICATIONS_ON) self.assertEqual(first=self.user_2.speedy_match_profile.notify_on_like, second=User.NOTIFICATIONS_OFF) self.client.login(username=self.user_1.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.user_2.get_absolute_url(), status_code=302, target_status_code=200) self.assertEqual(first=UserLike.objects.count(), second=1) like = UserLike.objects.first() self.assertEqual(first=like.from_user.id, second=self.user_1.id) self.assertEqual(first=like.to_user.id, second=self.user_2.id) self.assertEqual(first=len(mail.outbox), second=0) def test_user_cannot_like_self(self): self.client.login(username=self.user_2.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) r = self.client.post(path=self.page_url) self.assertEqual(first=r.status_code, second=403) self.assertEqual(first=UserLike.objects.count(), second=0) def test_user_cannot_like_other_user_if_blocked(self): Block.objects.block(blocker=self.user_1, blocked=self.user_2) self.client.login(username=self.user_1.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) r = self.client.post(path=self.page_url) self.assertEqual(first=r.status_code, second=403) self.assertEqual(first=UserLike.objects.count(), second=0) def test_user_cannot_like_other_user_if_blocking(self): Block.objects.block(blocker=self.user_2, blocked=self.user_1) self.client.login(username=self.user_1.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) r = self.client.post(path=self.page_url) self.assertEqual(first=r.status_code, second=403) self.assertEqual(first=UserLike.objects.count(), second=0) def test_user_cannot_like_twice(self): self.client.login(username=self.user_1.slug, password=tests_settings.USER_PASSWORD) self.assertEqual(first=UserLike.objects.count(), second=0) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.user_2.get_absolute_url(), status_code=302, target_status_code=200) self.assertEqual(first=UserLike.objects.count(), second=1) like = UserLike.objects.first() self.assertEqual(first=like.from_user.id, second=self.user_1.id) self.assertEqual(first=like.to_user.id, second=self.user_2.id) r = self.client.post(path=self.page_url) self.assertEqual(first=r.status_code, second=403) self.assertEqual(first=UserLike.objects.count(), second=1)
class UserFriendRequestViewTestCaseMixin(SpeedyCoreFriendsLanguageMixin): def set_up(self): super().set_up() self.first_user = ActiveUserFactory() self.second_user = ActiveUserFactory() self.page_url = '/{}/friends/request/'.format(self.second_user.slug) self.same_user_page_url = '/{}/friends/request/'.format( self.first_user.slug) self.client.login(username=self.first_user.slug, password=tests_settings.USER_PASSWORD) def test_visitor_cannot_send_friend_request(self): self.client.logout() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url='/login/?next={}'.format( self.page_url)) self.assertIsNone(obj=r.context) @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_can_send_friend_request(self): r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual( first=self.second_user.friendship_requests_received.count(), second=1) self.assertEqual( first=self.first_user.friendship_requests_sent.count(), second=1) friendship_request = self.second_user.friendship_requests_received.first( ) self.assertEqual(first=friendship_request.from_user, second=self.first_user) self.assertEqual(first=friendship_request.to_user, second=self.second_user) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._friend_request_sent_success_message ]) ###### TODO @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_cannot_send_friend_request_twice(self): r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual( first=self.second_user.friendship_requests_received.count(), second=1) self.assertEqual( first=self.first_user.friendship_requests_sent.count(), second=1) self.assertIsNone(obj=r.context) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual( first=self.second_user.friendship_requests_received.count(), second=1) self.assertEqual( first=self.first_user.friendship_requests_sent.count(), second=1) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[self._friendship_already_requested_error_message ]) ###### TODO self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=["Friendship already requested" ]) #### # ~~~~ TODO: remove this line! @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_cannot_send_friend_request_to_a_friend(self): self.assertFalse(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) Friend.objects.add_friend(from_user=self.first_user, to_user=self.second_user).accept() self.assertTrue(expr=Friend.objects.are_friends( user1=self.first_user, user2=self.second_user)) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual( first=self.first_user.friendship_requests_received.count(), second=0) self.assertEqual( first=self.first_user.friendship_requests_sent.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.first_user.get_absolute_url()) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[self._users_are_already_friends_error_message]) ###### TODO self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=["Users are already friends" ]) #### # ~~~~ TODO: remove this line! @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_cannot_send_friend_request_to_himself(self): r = self.client.post(path=self.same_user_page_url) self.assertRedirects(response=r, expected_url=self.first_user.get_absolute_url()) self.assertEqual( first=self.first_user.friendship_requests_received.count(), second=0) self.assertEqual( first=self.first_user.friendship_requests_sent.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.first_user.get_absolute_url()) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[ self._users_cannot_be_friends_with_themselves_error_message ]) ###### TODO self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=["Users cannot be friends with themselves" ]) #### # ~~~~ TODO: remove this line! @unittest.expectedFailure # ~~~~ TODO: fix this test! @override_settings( USER_SETTINGS=get_django_settings_class_with_override_settings( django_settings_class=django_settings.USER_SETTINGS, MAX_NUMBER_OF_FRIENDS_ALLOWED=tests_settings. OVERRIDE_USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)) def test_user_can_send_friend_request_if_not_maximum(self): # ~~~~ TODO: remove all the following lines. self._1___set_up( django_settings=django_settings) #### ~~~~ TODO: remove this line! # print("test_user_can_send_friend_request_if_not_maximum: django_settings.USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED", django_settings.USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)#### # print("test_user_can_send_friend_request_if_not_maximum: User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED", User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED)#### # ~~~~ TODO: remove all the above lines. self.assertEqual(first=User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED, second=4) for i in range(User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED - 1): Friend.objects.add_friend(from_user=self.first_user, to_user=ActiveUserFactory()).accept() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual( first=self.second_user.friendship_requests_received.count(), second=1) self.assertEqual( first=self.first_user.friendship_requests_sent.count(), second=1) friendship_request = self.second_user.friendship_requests_received.first( ) self.assertEqual(first=friendship_request.from_user, second=self.first_user) self.assertEqual(first=friendship_request.to_user, second=self.second_user) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._friend_request_sent_success_message ]) ###### TODO @override_settings( USER_SETTINGS=get_django_settings_class_with_override_settings( django_settings_class=django_settings.USER_SETTINGS, MAX_NUMBER_OF_FRIENDS_ALLOWED=tests_settings. OVERRIDE_USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)) def test_user_cannot_send_friend_request_if_maximum(self): # ~~~~ TODO: remove all the following lines. self._1___set_up( django_settings=django_settings) #### ~~~~ TODO: remove this line! # print("test_user_cannot_send_friend_request_if_maximum: django_settings.USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED", django_settings.USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)#### # print("test_user_cannot_send_friend_request_if_maximum: User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED", User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED)#### # ~~~~ TODO: remove all the above lines. self.assertEqual(first=User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED, second=4) for i in range(User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED): Friend.objects.add_friend(from_user=self.first_user, to_user=ActiveUserFactory()).accept() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url(), fetch_redirect_response=False) self.assertEqual( first=self.second_user.friendship_requests_received.count(), second=0) self.assertEqual( first=self.first_user.friendship_requests_sent.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual( list1=list(map(str, r.context['messages'])), list2=[ self. _you_already_have_friends_error_message_by_user_number_of_friends_and_gender( user_number_of_friends=4, gender=self.first_user.get_gender()) ]) #####-1 TODO
class UserFriendRequestViewTestCaseMixin(SpeedyCoreFriendsLanguageMixin): def set_up(self): super().set_up() self.first_user = ActiveUserFactory() self.second_user = ActiveUserFactory() self.page_url = '/{}/friends/request/'.format(self.second_user.slug) self.same_user_page_url = '/{}/friends/request/'.format(self.first_user.slug) self.client.login(username=self.first_user.slug, password=tests_settings.USER_PASSWORD) def test_visitor_cannot_send_friend_request(self): self.client.logout() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url='/login/?next={}'.format(self.page_url)) self.assertIsNone(obj=r.context) @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_can_send_friend_request(self): r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual(first=self.second_user.friendship_requests_received.count(), second=1) self.assertEqual(first=self.first_user.friendship_requests_sent.count(), second=1) friendship_request = self.second_user.friendship_requests_received.first() self.assertEqual(first=friendship_request.from_user, second=self.first_user) self.assertEqual(first=friendship_request.to_user, second=self.second_user) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._friend_request_sent_success_message]) ###### TODO @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_cannot_send_friend_request_twice(self): r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual(first=self.second_user.friendship_requests_received.count(), second=1) self.assertEqual(first=self.first_user.friendship_requests_sent.count(), second=1) self.assertIsNone(obj=r.context) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual(first=self.second_user.friendship_requests_received.count(), second=1) self.assertEqual(first=self.first_user.friendship_requests_sent.count(), second=1) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._friendship_already_requested_error_message]) ###### TODO self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=["Friendship already requested"])#### # ~~~~ TODO: remove this line! @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_cannot_send_friend_request_to_a_friend(self): self.assertFalse(expr=Friend.objects.are_friends(user1=self.first_user, user2=self.second_user)) Friend.objects.add_friend(from_user=self.first_user, to_user=self.second_user).accept() self.assertTrue(expr=Friend.objects.are_friends(user1=self.first_user, user2=self.second_user)) r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual(first=self.first_user.friendship_requests_received.count(), second=0) self.assertEqual(first=self.first_user.friendship_requests_sent.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.first_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._users_are_already_friends_error_message]) ###### TODO self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=["Users are already friends"])#### # ~~~~ TODO: remove this line! @unittest.expectedFailure # ~~~~ TODO: fix this test! def test_user_cannot_send_friend_request_to_himself(self): r = self.client.post(path=self.same_user_page_url) self.assertRedirects(response=r, expected_url=self.first_user.get_absolute_url()) self.assertEqual(first=self.first_user.friendship_requests_received.count(), second=0) self.assertEqual(first=self.first_user.friendship_requests_sent.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.first_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._users_cannot_be_friends_with_themselves_error_message]) ###### TODO self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=["Users cannot be friends with themselves"])#### # ~~~~ TODO: remove this line! @unittest.expectedFailure # ~~~~ TODO: fix this test! @override_settings(USER_SETTINGS=get_django_settings_class_with_override_settings(django_settings_class=django_settings.USER_SETTINGS, MAX_NUMBER_OF_FRIENDS_ALLOWED=tests_settings.OVERRIDE_USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)) def test_user_can_send_friend_request_if_not_maximum(self): # ~~~~ TODO: remove all the following lines. self._1___set_up(django_settings=django_settings) #### ~~~~ TODO: remove this line # print("test_user_can_send_friend_request_if_not_maximum: django_settings.USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED", django_settings.USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)#### # print("test_user_can_send_friend_request_if_not_maximum: User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED", User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED)#### # ~~~~ TODO: remove all the above lines. self.assertEqual(first=User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED, second=4) for i in range(User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED - 1): Friend.objects.add_friend(from_user=self.first_user, to_user=ActiveUserFactory()).accept() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url()) self.assertEqual(first=self.second_user.friendship_requests_received.count(), second=1) self.assertEqual(first=self.first_user.friendship_requests_sent.count(), second=1) friendship_request = self.second_user.friendship_requests_received.first() self.assertEqual(first=friendship_request.from_user, second=self.first_user) self.assertEqual(first=friendship_request.to_user, second=self.second_user) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._friend_request_sent_success_message]) ###### TODO @override_settings(USER_SETTINGS=get_django_settings_class_with_override_settings(django_settings_class=django_settings.USER_SETTINGS, MAX_NUMBER_OF_FRIENDS_ALLOWED=tests_settings.OVERRIDE_USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)) def test_user_cannot_send_friend_request_if_maximum(self): # ~~~~ TODO: remove all the following lines. self._1___set_up(django_settings=django_settings) #### ~~~~ TODO: remove this line # print("test_user_cannot_send_friend_request_if_maximum: django_settings.USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED", django_settings.USER_SETTINGS.MAX_NUMBER_OF_FRIENDS_ALLOWED)#### # print("test_user_cannot_send_friend_request_if_maximum: User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED", User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED)#### # ~~~~ TODO: remove all the above lines. self.assertEqual(first=User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED, second=4) for i in range(User.settings.MAX_NUMBER_OF_FRIENDS_ALLOWED): Friend.objects.add_friend(from_user=self.first_user, to_user=ActiveUserFactory()).accept() r = self.client.post(path=self.page_url) self.assertRedirects(response=r, expected_url=self.second_user.get_absolute_url(), fetch_redirect_response=False) self.assertEqual(first=self.second_user.friendship_requests_received.count(), second=0) self.assertEqual(first=self.first_user.friendship_requests_sent.count(), second=0) self.assertIsNone(obj=r.context) r = self.client.get(path=self.second_user.get_absolute_url()) self.assertListEqual(list1=list(map(str, r.context['messages'])), list2=[self._you_already_have_friends_error_message_by_user_number_of_friends_and_gender(user_number_of_friends=4, gender=self.first_user.get_gender())]) #####-1 TODO