Beispiel #1
0
    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)
Beispiel #2
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
Beispiel #3
0
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
Beispiel #4
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
Beispiel #5
0
    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=[])
Beispiel #6
0
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
Beispiel #7
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)
Beispiel #8
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)
Beispiel #9
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)
Beispiel #10
0
    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))
Beispiel #11
0
    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)
Beispiel #12
0
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
Beispiel #13
0
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