Beispiel #1
0
 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_tag(self):
        user1 = ActiveUserFactory()
        user2 = ActiveUserFactory()
        user3 = ActiveUserFactory()

        chats = [
            ChatFactory(ent1=user1, ent2=user2),
            ChatFactory(ent1=user3, ent2=user1),
            ChatFactory(ent1=user2, ent2=user3),
        ]

        Message.objects.send_message(from_entity=user1, chat=chats[0], text='text')
        sleep(0.1)
        Message.objects.send_message(from_entity=user2, chat=chats[0], text='text')
        sleep(0.1)
        Message.objects.send_message(from_entity=user2, chat=chats[0], text='text')
        sleep(0.1)

        Message.objects.send_message(from_entity=user3, chat=chats[1], text='text')
        sleep(0.1)
        Message.objects.send_message(from_entity=user1, chat=chats[1], text='text')
        sleep(0.1)
        Message.objects.send_message(from_entity=user3, chat=chats[1], text='text')
        sleep(0.1)

        Message.objects.send_message(from_entity=user2, chat=chats[2], text='text')
        sleep(0.1)
        Message.objects.send_message(from_entity=user3, chat=chats[2], text='text')
        sleep(0.1)

        self.assertEqual(first=im_tags.unread_chats_count(user1), second=1 + 1 + 0)
        self.assertEqual(first=im_tags.unread_chats_count(user2), second=0 + 0 + 1)
        self.assertEqual(first=im_tags.unread_chats_count(user3), second=0 + 0 + 0)
Beispiel #3
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 #4
0
 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)
Beispiel #5
0
        def test_tag(self):
            user_1 = ActiveUserFactory()
            user_2 = ActiveUserFactory()
            user_3 = ActiveUserFactory()

            chats = [
                ChatFactory(ent1=user_1, ent2=user_2),
                ChatFactory(ent1=user_3, ent2=user_1),
                ChatFactory(ent1=user_2, ent2=user_3),
            ]

            Message.objects.send_message(from_entity=user_1, chat=chats[0], text='text')
            sleep(0.1)
            Message.objects.send_message(from_entity=user_2, chat=chats[0], text='text')
            sleep(0.1)
            Message.objects.send_message(from_entity=user_2, chat=chats[0], text='text')
            sleep(0.1)

            Message.objects.send_message(from_entity=user_3, chat=chats[1], text='text')
            sleep(0.1)
            Message.objects.send_message(from_entity=user_1, chat=chats[1], text='text')
            sleep(0.1)
            Message.objects.send_message(from_entity=user_3, chat=chats[1], text='text')
            sleep(0.1)

            Message.objects.send_message(from_entity=user_2, chat=chats[2], text='text')
            sleep(0.1)
            Message.objects.send_message(from_entity=user_3, chat=chats[2], text='text')
            sleep(0.1)

            self.assertEqual(first=core_messages_tags_and_filters.unread_chats_count(entity=user_1), second=1 + 1 + 0)
            self.assertEqual(first=core_messages_tags_and_filters.unread_chats_count(entity=user_2), second=0 + 0 + 1)
            self.assertEqual(first=core_messages_tags_and_filters.unread_chats_count(entity=user_3), second=0 + 0 + 0)
Beispiel #6
0
 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)
Beispiel #7
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)
        def test_tag(self):
            user1 = ActiveUserFactory()
            user2 = ActiveUserFactory()
            chat = ChatFactory(ent1=user1, ent2=user2)
            messages = [
                Message.objects.send_message(from_entity=user2,
                                             chat=chat,
                                             text='User 2 First Message'),
                Message.objects.send_message(from_entity=user1,
                                             chat=chat,
                                             text='User 1 Message'),
                Message.objects.send_message(from_entity=user2,
                                             chat=chat,
                                             text='User 2 Second Message'),
            ]
            self.assertEqual(first=ReadMark.objects.count(), second=2)

            output = core_messages_tags.annotate_messages_with_read_marks(
                messages, user1)
            self.assertEqual(first=output, second='')
            self.assertFalse(expr=messages[0].is_unread)
            self.assertFalse(expr=messages[1].is_unread)
            self.assertTrue(expr=messages[2].is_unread)

            output = core_messages_tags.annotate_messages_with_read_marks(
                messages, user2)
            self.assertEqual(first=output, second='')
            self.assertFalse(expr=messages[0].is_unread)
            self.assertFalse(expr=messages[1].is_unread)
            self.assertFalse(expr=messages[2].is_unread)
Beispiel #9
0
    class LikeRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()
            self.anon = AnonymousUser()

        def test_anonymous_cannot_like(self):
            self.assertFalse(expr=self.anon.has_perm(perm='likes.like', obj=self.other_user))

        def test_user_cannot_like_self(self):
            self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.user))

        def test_user_can_like(self):
            self.assertTrue(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))

        def test_user_cannot_like_other_user_if_blocked(self):
            Block.objects.block(blocker=self.user, blocked=self.other_user)
            self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))

        def test_user_cannot_like_other_user_if_blocking(self):
            Block.objects.block(blocker=self.other_user, blocked=self.user)
            self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))

        def test_user_cannot_like_twice(self):
            UserLike.objects.add_like(from_user=self.user, to_user=self.other_user)
            self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))
Beispiel #10
0
class ViewProfileTestCaseMixin(object):
    def get_active_user_doron(self):
        user = ActiveUserFactory(first_name_en="Doron", last_name_en="Matalon", slug="doron-matalon", gender=User.GENDER_FEMALE)
        user.speedy_match_profile.gender_to_match = [User.GENDER_MALE]
        user.save_user_and_profile()
        return user

    def get_active_user_jennifer(self):
        user = ActiveUserFactory(first_name_en="Jennifer", last_name_en="Connelly", slug="jennifer-connelly", gender=User.GENDER_FEMALE)
        user.save_user_and_profile()
        return user

    def set_up(self):
        super().set_up()
        # The default for ActiveUserFactory() on Speedy Match is to match everybody with 5 stars.
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()
        # Doron wants to meet only male and Jennifer is a female, therefore they don't match on Speedy Match.
        self.doron = self.get_active_user_doron()
        self.jennifer = self.get_active_user_jennifer()

    def test_user_and_other_user_have_access(self):
        self.assertTrue(expr=self.user.has_perm(perm='accounts.view_profile', obj=self.other_user))
        self.assertTrue(expr=self.other_user.has_perm(perm='accounts.view_profile', obj=self.user))

    def test_user_and_other_user_have_no_access_if_blocked(self):
        Block.objects.block(blocker=self.other_user, blocked=self.user)
        self.assertFalse(expr=self.user.has_perm(perm='accounts.view_profile', obj=self.other_user))
        self.assertFalse(expr=self.other_user.has_perm(perm='accounts.view_profile', obj=self.user))

    def test_doron_and_jennifer_have_access(self):
        raise NotImplementedError()

    def test_doron_and_jennifer_have_no_access(self):
        raise NotImplementedError()
Beispiel #11
0
 def set_up(self):
     super().set_up()
     self.user_1 = ActiveUserFactory(gender=User.GENDER_FEMALE)
     self.user_2 = ActiveUserFactory(gender=User.GENDER_MALE)
     self.user_3 = ActiveUserFactory(gender=User.GENDER_FEMALE)
     self.user_4 = ActiveUserFactory(gender=User.GENDER_MALE)
     self.user_5 = ActiveUserFactory(gender=User.GENDER_OTHER)
Beispiel #12
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 #13
0
    class RemoveRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()
            Friend.objects.add_friend(from_user=self.user,
                                      to_user=self.other_user).accept()

        def test_user_can_remove_other_user(self):
            self.assertTrue(expr=self.user.has_perm(perm='friends.remove',
                                                    obj=self.other_user))

        def test_other_user_can_remove_user(self):
            self.assertTrue(expr=self.other_user.has_perm(
                perm='friends.remove', obj=self.user))

        def test_user_cannot_remove_themself(self):
            self.assertFalse(
                expr=self.user.has_perm(perm='friends.remove', obj=self.user))

        def test_user_cannot_remove_other_user_if_not_friends(self):
            Friend.objects.remove_friend(from_user=self.user,
                                         to_user=self.other_user)
            self.assertFalse(expr=self.user.has_perm(perm='friends.remove',
                                                     obj=self.other_user))
Beispiel #14
0
 def set_up(self):
     super().set_up()
     self.user = ActiveUserFactory()
     self.other_user = ActiveUserFactory()
     self.default_url = '/{}/likes/'.format(self.user.slug)
     self.to_url = '/{}/likes/people-i-like/'.format(self.user.slug)
     self.from_url = '/{}/likes/people-who-like-me/'.format(
         self.user.slug)
     self.mutual_url = '/{}/likes/mutual/'.format(self.user.slug)
     self.to_likes = {
         UserLikeFactory(from_user=self.user),
         UserLikeFactory(from_user=self.user),
         UserLikeFactory(from_user=self.user),
     }
     self.mutual_likes = {
         UserLikeFactory(from_user=self.user, to_user=self.other_user),
     }
     self.to_likes |= self.mutual_likes
     self.from_likes = {
         UserLikeFactory(to_user=self.user),
         UserLikeFactory(to_user=self.user),
         UserLikeFactory(to_user=self.user, from_user=self.other_user),
     }
     self.client.login(username=self.user.slug,
                       password=tests_settings.USER_PASSWORD)
Beispiel #15
0
    class RequestRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()

        def test_user_can_send_request_to_other_user(self):
            self.assertTrue(expr=self.user.has_perm(perm='friends.request',
                                                    obj=self.other_user))

        def test_user_cannot_send_request_to_other_user_if_blocked(self):
            Block.objects.block(blocker=self.other_user, blocked=self.user)
            self.assertFalse(expr=self.user.has_perm(perm='friends.request',
                                                     obj=self.other_user))
            self.assertFalse(expr=self.other_user.has_perm(
                perm='friends.request', obj=self.user))

        def test_user_cannot_send_request_to_themself(self):
            self.assertFalse(
                expr=self.user.has_perm(perm='friends.request', obj=self.user))

        def test_user_cannot_send_second_request(self):
            Friend.objects.add_friend(from_user=self.user,
                                      to_user=self.other_user)
            self.assertFalse(expr=self.user.has_perm(perm='friends.request',
                                                     obj=self.other_user))
Beispiel #16
0
class ViewProfileRulesTestCaseMixin(object):
    def get_active_user_doron(self):
        user = ActiveUserFactory(first_name_en="Doron", last_name_en="Matalon", slug="doron-matalon", gender=User.GENDER_FEMALE)
        user.speedy_match_profile.gender_to_match = [User.GENDER_MALE]
        user.save_user_and_profile()
        return user

    def get_active_user_jennifer(self):
        user = ActiveUserFactory(first_name_en="Jennifer", last_name_en="Connelly", slug="jennifer-connelly", gender=User.GENDER_FEMALE)
        user.save_user_and_profile()
        return user

    def set_up(self):
        super().set_up()
        # The default for ActiveUserFactory() on Speedy Match is to match everybody with 5 stars.
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()
        # Doron wants to meet only male and Jennifer is a female, therefore they don't match on Speedy Match.
        self.doron = self.get_active_user_doron()
        self.jennifer = self.get_active_user_jennifer()

    def test_user_and_other_user_have_access(self):
        self.assertTrue(expr=self.user.has_perm(perm='accounts.view_profile', obj=self.other_user))
        self.assertTrue(expr=self.other_user.has_perm(perm='accounts.view_profile', obj=self.user))

    def test_user_and_other_user_have_no_access_if_blocked(self):
        Block.objects.block(blocker=self.other_user, blocked=self.user)
        self.assertFalse(expr=self.user.has_perm(perm='accounts.view_profile', obj=self.other_user))
        self.assertFalse(expr=self.other_user.has_perm(perm='accounts.view_profile', obj=self.user))

    def test_doron_and_jennifer_have_access(self):
        raise NotImplementedError()

    def test_doron_and_jennifer_have_no_access(self):
        raise NotImplementedError()
Beispiel #17
0
 def set_up(self):
     super().set_up()
     self.user_1 = ActiveUserFactory()
     self.user_2 = ActiveUserFactory()
     self.user_3 = ActiveUserFactory()
     self.chat_1_2 = ChatFactory(ent1=self.user_1, ent2=self.user_2)
     self.chat_1_3 = ChatFactory(ent1=self.user_1, ent2=self.user_3)
Beispiel #18
0
 def test_str_group_chat(self):
     user_1 = self.get_active_user_doron()
     user_2 = self.get_active_user_jennifer()
     user_3 = ActiveUserFactory()
     user_4 = ActiveUserFactory()
     chat = ChatFactory(ent1=None,
                        ent2=None,
                        is_group=True,
                        group=[user_1, user_2, user_3, user_4])
     # print("test_str_group_chat: str(chat)=", str(chat)) #### ~~~~ TODO: remove this line!
     self.assertEqual(first=str(chat),
                      second="{}, {}, {}, {}".format(
                          user_1.profile.get_name(),
                          user_2.profile.get_name(),
                          user_3.profile.get_name(),
                          user_4.profile.get_name()))
     self.assertEqual(first=str(chat),
                      second="{}, {}, {}, {}".format(
                          str(user_1), str(user_2), str(user_3),
                          str(user_4)))
     if (self.site.id == django_settings.SPEEDY_MATCH_SITE_ID):
         self.assertEqual(first=str(chat),
                          second="Doron, Jennifer, {}, {}".format(
                              user_3.profile.get_name(),
                              user_4.profile.get_name()))
     else:
         self.assertEqual(
             first=str(chat),
             second="Doron Matalon, Jennifer Connelly, {}, {}".format(
                 user_3.profile.get_name(), user_4.profile.get_name()))
Beispiel #19
0
 def set_up(self):
     super().set_up()
     # The default for ActiveUserFactory() on Speedy Match is to match everybody with 5 stars.
     self.user = ActiveUserFactory()
     self.other_user = ActiveUserFactory()
     # Doron wants to meet only male and Jennifer is a female, therefore they don't match on Speedy Match.
     self.doron = self.get_active_user_doron()
     self.jennifer = self.get_active_user_jennifer()
 def set_up(self):
     super().set_up()
     ChatFactory(is_group=True)
     self.user1 = ActiveUserFactory()
     self.user2 = ActiveUserFactory()
     self.user3 = ActiveUserFactory()
     self.chat_1_2 = ChatFactory(ent1=self.user1, ent2=self.user2)
     self.chat_1_2_3 = ChatFactory(group=(self.user1, self.user2, self.user3))
Beispiel #21
0
 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)
Beispiel #22
0
 def set_up(self):
     super().set_up()
     # The default for ActiveUserFactory() on Speedy Match is to match everybody with 5 stars.
     self.user = ActiveUserFactory()
     self.other_user = ActiveUserFactory()
     # Doron wants to meet only male and Jennifer is a female, therefore they don't match on Speedy Match.
     self.doron = self.get_active_user_doron()
     self.jennifer = self.get_active_user_jennifer()
Beispiel #23
0
 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)
Beispiel #24
0
 def set_up(self):
     super().set_up()
     self.user1 = ActiveUserFactory()
     self.user2 = ActiveUserFactory()
     self.page_url = '/messages/{}/compose/'.format(self.user2.slug)
     self.data = {
         'text': 'Hi Hi Hi',
     }
Beispiel #25
0
 def set_up(self):
     super().set_up()
     self.user1 = ActiveUserFactory()
     self.user2 = ActiveUserFactory()
     self.user3 = ActiveUserFactory()
     self.chat_1_2 = ChatFactory(ent1=self.user1, ent2=self.user2)
     self.chat_2_3 = ChatFactory(ent1=self.user2, ent2=self.user3)
     self.chat_3_1 = ChatFactory(ent1=self.user3, ent2=self.user1)
Beispiel #26
0
 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_tag(self):
     user1 = ActiveUserFactory()
     user2 = ActiveUserFactory()
     chat = ChatFactory(ent1=user1, ent2=user2)
     self.assertEqual(first=core_messages_tags.get_other_participant(
         chat, user1).id,
                      second=user2.id)
     self.assertEqual(first=core_messages_tags.get_other_participant(
         chat, user2).id,
                      second=user1.id)
 def set_up(self):
     super().set_up()
     self.user1 = ActiveUserFactory()
     self.user2 = ActiveUserFactory()
     Friend.objects.add_friend(from_user=self.user1,
                               to_user=ActiveUserFactory()).accept()
     Friend.objects.add_friend(from_user=self.user1,
                               to_user=ActiveUserFactory())
     Friend.objects.add_friend(from_user=ActiveUserFactory(),
                               to_user=self.user1)
Beispiel #29
0
 def set_up(self):
     super().set_up()
     self.user_1 = ActiveUserFactory()
     self.user_2 = ActiveUserFactory()
     self.user_3 = ActiveUserFactory()
     self.user_4 = ActiveUserFactory()
     self.user_5 = ActiveUserFactory()
     self.user_6 = ActiveUserFactory()
     self.user_1.relationship_status = User.RELATIONSHIP_STATUS_MARRIED
     self.user_2.speedy_match_profile.diet_match = {
         str(User.DIET_VEGAN): 5,
         str(User.DIET_VEGETARIAN): 4,
         str(User.DIET_CARNIST): 2
     }
     self.user_5.speedy_match_profile.relationship_status_match[str(
         User.RELATIONSHIP_STATUS_MARRIED
     )] = SpeedyMatchSiteProfile.RANK_0
     self.user_1.save_user_and_profile()
     self.user_2.save_user_and_profile()
     self.user_5.save_user_and_profile()
     sleep(0.02)
     self.user_6.profile.update_last_visit()
     sleep(0.01)
     self.user_4.profile.update_last_visit()
     sleep(0.01)
     self.user_3.profile.update_last_visit()
     sleep(0.01)
     self.user_2.profile.update_last_visit()
Beispiel #30
0
    class ViewRequestsRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user = ActiveUserFactory()
            self.other_user = ActiveUserFactory()

        def test_user_cannot_view_incoming_requests_for_other_user(self):
            self.assertFalse(expr=self.user.has_perm(perm='friends.view_requests', obj=self.other_user))

        def test_user_can_view_incoming_requests(self):
            self.assertTrue(expr=self.user.has_perm(perm='friends.view_requests', obj=self.user))
Beispiel #31
0
    class ViewChatsRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user_1 = ActiveUserFactory()
            self.user_2 = ActiveUserFactory()

        def test_can_see_his_chats(self):
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_chats', obj=self.user_1))

        def test_cannot_see_other_user_chats(self):
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.view_chats', obj=self.user_2))
Beispiel #32
0
class ViewChatsTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user1 = ActiveUserFactory()
        self.user2 = ActiveUserFactory()

    def test_can_see_his_chats(self):
        self.assertTrue(expr=self.user1.has_perm(perm='im.view_chats', obj=self.user1))

    def test_cannot_see_other_user_chats(self):
        self.assertFalse(expr=self.user1.has_perm(perm='im.view_chats', obj=self.user2))
Beispiel #33
0
 def test_get_slug_group_chat(self):
     user_1 = self.get_active_user_doron()
     user_2 = self.get_active_user_jennifer()
     user_3 = ActiveUserFactory()
     user_4 = ActiveUserFactory()
     chat = ChatFactory(ent1=None,
                        ent2=None,
                        is_group=True,
                        group=[user_1, user_2, user_3, user_4])
     self.assertEqual(first=chat.get_slug(current_user=user_1),
                      second=chat.id)
Beispiel #34
0
 def set_up(self):
     super().set_up()
     self.user = ActiveUserFactory()
     self.other_user = ActiveUserFactory()
     upload_file = tempfile.NamedTemporaryFile()
     upload_file.file.write(b'this is a file')
     upload_file.file.seek(0)
     self.data = {
         'file': SimpleUploadedFile(upload_file.name, upload_file.read())
     }
     self.upload_file = upload_file
Beispiel #35
0
 def set_up(self):
     super().set_up()
     self.user = ActiveUserFactory()
     self.other_user = ActiveUserFactory()
     self.primary_email = UserEmailAddressFactory(user=self.user,
                                                  is_confirmed=True)
     self.primary_email.make_primary()
     self.confirmed_email = UserEmailAddressFactory(user=self.user,
                                                    is_confirmed=True)
     self.unconfirmed_email = UserEmailAddressFactory(
         user=self.user, is_confirmed=False)
     self.other_user_email = UserEmailAddressFactory(
         user=self.other_user, is_confirmed=True)
Beispiel #36
0
 def set_up(self):
     super().set_up()
     self.user1 = ActiveUserFactory()
     self.user2 = ActiveUserFactory()
     self.user3 = ActiveUserFactory()
     self.chat_1_2 = ChatFactory(ent1=self.user1, ent2=self.user2)
     self.chat_2_3 = ChatFactory(ent1=self.user2, ent2=self.user3)
     self.chat_3_1 = ChatFactory(ent1=self.user3, ent2=self.user1)
     self.chat_url = '/messages/{}/'.format(
         self.chat_1_2.get_slug(current_user=self.user1))
     self.page_url = '/messages/{}/send/'.format(self.chat_1_2.id)
     self.data = {
         'text': 'Hi Hi Hi',
     }
Beispiel #37
0
class ReadChatTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user1 = ActiveUserFactory()
        self.user2 = ActiveUserFactory()
        self.user3 = ActiveUserFactory()
        self.chat_1_2 = ChatFactory(ent1=self.user1, ent2=self.user2)
        self.chat_1_3 = ChatFactory(ent1=self.user1, ent2=self.user3)

    def test_can_read_his_chat(self):
        self.assertTrue(expr=self.user2.has_perm(perm='im.read_chat', obj=self.chat_1_2))

    def test_cannot_read_a_chat_user_is_not_participate_in(self):
        self.assertFalse(expr=self.user2.has_perm(perm='im.read_chat', obj=self.chat_1_3))
Beispiel #38
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 #39
0
class ViewLikesTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()
        self.anon = AnonymousUser()

    def test_anonymous_cannot_view_likes(self):
        self.assertFalse(expr=self.anon.has_perm(perm='likes.view_likes', obj=self.user))

    def test_other_user_cannot_view_likes(self):
        self.assertFalse(expr=self.other_user.has_perm(perm='likes.view_likes', obj=self.user))

    def test_user_can_view_likes(self):
        self.assertTrue(expr=self.user.has_perm(perm='likes.view_likes', obj=self.user))
Beispiel #40
0
class SendMessageTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user1 = ActiveUserFactory()
        self.user2 = ActiveUserFactory()

    def test_cannot_send_message_to_self(self):
        self.assertFalse(expr=self.user1.has_perm(perm='im.send_message', obj=self.user1))

    def test_can_send_message_to_other_user(self):
        self.assertTrue(expr=self.user1.has_perm(perm='im.send_message', obj=self.user2))

    def test_cannot_send_message_to_other_user_if_blocked(self):
        Block.objects.block(blocker=self.user2, blocked=self.user1)
        self.assertFalse(expr=self.user1.has_perm(perm='im.send_message', obj=self.user2))
        self.assertFalse(expr=self.user2.has_perm(perm='im.send_message', obj=self.user1))
Beispiel #41
0
 def set_up(self):
     super().set_up()
     self.user1 = ActiveUserFactory()
     self.user2 = ActiveUserFactory()
     self.user3 = ActiveUserFactory()
     self.chat_1_2 = ChatFactory(ent1=self.user1, ent2=self.user2)
     self.chat_1_3 = ChatFactory(ent1=self.user1, ent2=self.user3)
Beispiel #42
0
class UnlikeTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()
        self.anon = AnonymousUser()

    def test_anonymous_cannot_unlike(self):
        self.assertFalse(expr=self.anon.has_perm(perm='likes.unlike', obj=self.other_user))

    def test_user_cannot_unlike_self(self):
        self.assertFalse(expr=self.user.has_perm(perm='likes.unlike', obj=self.user))

    def test_user_cannot_unlike_if_doesnt_like(self):
        self.assertFalse(expr=self.user.has_perm(perm='likes.unlike', obj=self.other_user))

    def test_user_can_unlike_if_likes(self):
        UserLike.objects.create(from_user=self.user, to_user=self.other_user)
        self.assertTrue(expr=self.user.has_perm(perm='likes.unlike', obj=self.other_user))
Beispiel #43
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 #44
0
class LikeTestCase(SiteTestCase):
    def set_up(self):
        super().set_up()
        self.user = ActiveUserFactory()
        self.other_user = ActiveUserFactory()
        self.anon = AnonymousUser()

    def test_anonymous_cannot_like(self):
        self.assertFalse(expr=self.anon.has_perm(perm='likes.like', obj=self.other_user))

    def test_user_cannot_like_self(self):
        self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.user))

    def test_user_can_like(self):
        self.assertTrue(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))

    def test_user_cannot_like_if_blocked(self):
        Block.objects.block(blocker=self.other_user, blocked=self.user)
        self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))

    def test_user_cannot_like_twice(self):
        UserLike.objects.create(from_user=self.user, to_user=self.other_user)
        self.assertFalse(expr=self.user.has_perm(perm='likes.like', obj=self.other_user))
Beispiel #45
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 #46
0
 def set_up(self):
     super().set_up()
     self.user = ActiveUserFactory()
     self.other_user = ActiveUserFactory()
     self.page_url = '/{}/likes/unlike/'.format(self.other_user.slug)
Beispiel #47
0
 def set_up(self):
     super().set_up()
     self.user1 = ActiveUserFactory()
     self.user2 = ActiveUserFactory()
Beispiel #48
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 #49
0
 def get_active_user_doron(self):
     user = ActiveUserFactory(first_name_en="Doron", last_name_en="Matalon", slug="doron-matalon", gender=User.GENDER_FEMALE)
     user.speedy_match_profile.gender_to_match = [User.GENDER_MALE]
     user.save_user_and_profile()
     return user
Beispiel #50
0
 def set_up(self):
     super().set_up()
     self.user = ActiveUserFactory()
     self.other_user = ActiveUserFactory()
     self.anon = AnonymousUser()
Beispiel #51
0
 def get_active_user_jennifer(self):
     user = ActiveUserFactory(first_name_en="Jennifer", last_name_en="Connelly", slug="jennifer-connelly", gender=User.GENDER_FEMALE)
     user.save_user_and_profile()
     return user