Пример #1
0
 def get_active_user_doron(self):
     user = ActiveUserFactory(first_name_en="Doron",
                              last_name_en="Matalon",
                              slug="doron-matalon")
     user.save_user_and_profile()
     return user
Пример #2
0
 def get_active_user_jennifer(self):
     user = ActiveUserFactory(first_name_en="Jennifer",
                              last_name_en="Connelly",
                              slug="jennifer-connelly")
     user.save_user_and_profile()
     return user
Пример #3
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)
Пример #4
0
    class LikeListViewsTestCaseMixin(SpeedyMatchLikesLanguageMixin):
        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.default_url = '/{}/likes/'.format(self.user_1.slug)
            self.to_url = '/{}/likes/people-i-like/'.format(self.user_1.slug)
            self.from_url = '/{}/likes/people-who-like-me/'.format(self.user_1.slug)
            self.mutual_url = '/{}/likes/mutual/'.format(self.user_1.slug)
            UserLike.objects.add_like(from_user=self.user_1, to_user=ActiveUserFactory(slug="user-99"))
            UserLike.objects.add_like(from_user=self.user_1, to_user=ActiveUserFactory(slug="user-98"))
            UserLike.objects.add_like(from_user=self.user_1, to_user=self.user_3)
            UserLike.objects.add_like(from_user=self.user_1, to_user=self.user_2)
            UserLike.objects.add_like(from_user=self.user_1, to_user=self.user_5)
            UserLike.objects.add_like(from_user=ActiveUserFactory(slug="user-97"), to_user=self.user_1)
            UserLike.objects.add_like(from_user=ActiveUserFactory(slug="user-96"), to_user=self.user_1)
            UserLike.objects.add_like(from_user=self.user_5, to_user=self.user_1)
            UserLike.objects.add_like(from_user=self.user_2, to_user=self.user_1)
            self.to_likes = {
                User.objects.get(slug="user-99"),
                User.objects.get(slug="user-98"),
                self.user_3,
                self.user_2,
                self.user_5,
            }
            self.from_likes = {
                User.objects.get(slug="user-97"),
                User.objects.get(slug="user-96"),
                self.user_2,
                self.user_5,
            }
            self.mutual_likes = {
                self.user_2,
                self.user_5,
            }
            self.client.login(username=self.user_1.slug, password=tests_settings.USER_PASSWORD)
            sleep(0.02)
            self.user_5.profile.update_last_visit()
            sleep(0.01)
            self.user_4.profile.update_last_visit()
            sleep(0.01)
            self.user_2.profile.update_last_visit()
            sleep(0.01)
            self.user_3.profile.update_last_visit()
            self.assertEqual(first=UserLike.objects.count(), second=9)

        def _test_all_like_list_views_contain_strings(self, strings):
            r = self.client.get(path=self.to_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=len(self.to_likes))
            for string in strings:
                self.assertIn(member=string, container=r.content.decode())
            r = self.client.get(path=self.from_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=len(self.from_likes))
            for string in strings:
                self.assertIn(member=string, container=r.content.decode())
            r = self.client.get(path=self.mutual_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=len(self.mutual_likes))
            for string in strings:
                self.assertIn(member=string, container=r.content.decode())

        def test_visitor_has_no_access(self):
            self.client.logout()
            self.assertEqual(first=self.client.get(path=self.to_url).status_code, second=302)
            self.assertEqual(first=self.client.get(path=self.from_url).status_code, second=302)
            self.assertEqual(first=self.client.get(path=self.mutual_url).status_code, second=302)

        def test_default_redirect(self):
            r = self.client.get(path=self.default_url)
            self.assertRedirects(response=r, expected_url=self.to_url, status_code=302, target_status_code=200)

        def test_user_can_see_who_they_like(self):
            r = self.client.get(path=self.to_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=5)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=self.to_likes)
            self.assertSetEqual(set1={like.from_user for like in r.context['object_list']}, set2={self.user_1})
            to_likes = set(self.to_likes)
            UserLike.objects.add_like(from_user=self.user_1, to_user=self.user_4)
            to_likes.add(self.user_4)
            self.assertEqual(first=UserLike.objects.count(), second=10)
            r = self.client.get(path=self.to_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=6)
            self.assertNotEqual(first={like.to_user for like in r.context['object_list']}, second=self.to_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=to_likes)
            self.assertEqual(first=r.context['object_list'][0].to_user, second=self.user_3)
            sleep(0.01)
            self.user_4.profile.update_last_visit()
            r = self.client.get(path=self.to_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=6)
            self.assertNotEqual(first={like.to_user for like in r.context['object_list']}, second=self.to_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=to_likes)
            self.assertEqual(first=r.context['object_list'][0].to_user, second=self.user_4)
            Block.objects.block(blocker=self.user_4, blocked=self.user_1)
            r = self.client.get(path=self.to_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=6)
            self.assertNotEqual(first={like.to_user for like in r.context['object_list']}, second=self.to_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=to_likes)
            Block.objects.block(blocker=self.user_1, blocked=self.user_4)
            r = self.client.get(path=self.to_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=5)
            self.assertNotEqual(first={like.to_user for like in r.context['object_list']}, second=to_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=self.to_likes)
            Block.objects.unblock(blocker=self.user_1, blocked=self.user_4)
            r = self.client.get(path=self.to_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=5)
            self.assertNotEqual(first={like.to_user for like in r.context['object_list']}, second=to_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=self.to_likes)

        def test_user_can_see_who_likes_them(self):
            r = self.client.get(path=self.from_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=4)
            self.assertSetEqual(set1={like.from_user for like in r.context['object_list']}, set2=self.from_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2={self.user_1})
            from_likes = set(self.from_likes)
            UserLike.objects.add_like(from_user=self.user_4, to_user=self.user_1)
            from_likes.add(self.user_4)
            self.assertEqual(first=UserLike.objects.count(), second=10)
            r = self.client.get(path=self.from_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=5)
            self.assertNotEqual(first={like.from_user for like in r.context['object_list']}, second=self.from_likes)
            self.assertSetEqual(set1={like.from_user for like in r.context['object_list']}, set2=from_likes)
            self.assertEqual(first=r.context['object_list'][0].from_user, second=self.user_2)
            sleep(0.01)
            self.user_4.profile.update_last_visit()
            r = self.client.get(path=self.from_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=5)
            self.assertNotEqual(first={like.from_user for like in r.context['object_list']}, second=self.from_likes)
            self.assertSetEqual(set1={like.from_user for like in r.context['object_list']}, set2=from_likes)
            self.assertEqual(first=r.context['object_list'][0].from_user, second=self.user_4)
            Block.objects.block(blocker=self.user_1, blocked=self.user_4)
            r = self.client.get(path=self.from_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=4)
            self.assertNotEqual(first={like.from_user for like in r.context['object_list']}, second=from_likes)
            self.assertSetEqual(set1={like.from_user for like in r.context['object_list']}, set2=self.from_likes)
            Block.objects.unblock(blocker=self.user_1, blocked=self.user_4)
            r = self.client.get(path=self.from_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=5)
            self.assertNotEqual(first={like.from_user for like in r.context['object_list']}, second=self.from_likes)
            self.assertSetEqual(set1={like.from_user for like in r.context['object_list']}, set2=from_likes)
            Block.objects.block(blocker=self.user_4, blocked=self.user_1)
            r = self.client.get(path=self.from_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=4)
            self.assertNotEqual(first={like.from_user for like in r.context['object_list']}, second=from_likes)
            self.assertSetEqual(set1={like.from_user for like in r.context['object_list']}, set2=self.from_likes)
            Block.objects.unblock(blocker=self.user_4, blocked=self.user_1)
            r = self.client.get(path=self.from_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=4)
            self.assertNotEqual(first={like.from_user for like in r.context['object_list']}, second=from_likes)
            self.assertSetEqual(set1={like.from_user for like in r.context['object_list']}, set2=self.from_likes)

        def test_user_can_see_mutual_likes(self):
            r = self.client.get(path=self.mutual_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=2)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=self.mutual_likes)
            self.assertSetEqual(set1={like.from_user for like in r.context['object_list']}, set2={self.user_1})
            mutual_likes = set(self.mutual_likes)
            UserLike.objects.add_like(from_user=self.user_1, to_user=self.user_4)
            UserLike.objects.add_like(from_user=self.user_4, to_user=self.user_1)
            mutual_likes.add(self.user_4)
            self.assertEqual(first=UserLike.objects.count(), second=11)
            r = self.client.get(path=self.mutual_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=3)
            self.assertNotEqual(first={like.to_user for like in r.context['object_list']}, second=self.mutual_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=mutual_likes)
            self.assertEqual(first=r.context['object_list'][0].to_user, second=self.user_2)
            sleep(0.01)
            self.user_4.profile.update_last_visit()
            r = self.client.get(path=self.mutual_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=3)
            self.assertNotEqual(first={like.to_user for like in r.context['object_list']}, second=self.mutual_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=mutual_likes)
            self.assertEqual(first=r.context['object_list'][0].to_user, second=self.user_4)
            Block.objects.block(blocker=self.user_4, blocked=self.user_1)
            r = self.client.get(path=self.mutual_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=2)
            self.assertNotEqual(first={like.to_user for like in r.context['object_list']}, second=mutual_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=self.mutual_likes)
            Block.objects.unblock(blocker=self.user_4, blocked=self.user_1)
            r = self.client.get(path=self.mutual_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertEqual(first=len(r.context['object_list']), second=2)
            self.assertNotEqual(first={like.to_user for like in r.context['object_list']}, second=mutual_likes)
            self.assertSetEqual(set1={like.to_user for like in r.context['object_list']}, set2=self.mutual_likes)

        def test_like_list_views_titles(self):
            self._test_all_like_list_views_contain_strings(strings=[
                self._list_to_title_dict_by_gender[User.GENDER_OTHER_STRING],
                self._list_from_title_dict_by_gender[User.GENDER_OTHER_STRING],
                self._list_mutual_title,
            ])
            user_99 = User.objects.get(slug="user-99")
            user_97 = User.objects.get(slug="user-97")
            gender_count_dict = {
                User.GENDER_FEMALE_STRING: 0,
                User.GENDER_MALE_STRING: 0,
                User.GENDER_OTHER_STRING: 0,
            }
            for gender in User.GENDER_VALID_VALUES:
                for user in [self.user_3, self.user_2, self.user_5, User.objects.get(slug="user-98"), User.objects.get(slug="user-96")]:
                    user.gender = gender
                    user.save_user_and_profile()
                if (gender == User.GENDER_OTHER):
                    two_genders = [random.choice([User.GENDER_FEMALE, User.GENDER_MALE]), gender]
                else:
                    two_genders = [User.GENDER_FEMALE, User.GENDER_MALE]
                for gender_to_match in [User.GENDER_VALID_VALUES, [gender], two_genders]:
                    self.user_1.speedy_match_profile.gender_to_match = gender_to_match
                    self.user_1.save_user_and_profile()
                    for gender_99 in User.GENDER_VALID_VALUES:
                        for gender_97 in User.GENDER_VALID_VALUES:
                            user_99.gender = gender_99
                            user_97.gender = gender_97
                            user_99.save_user_and_profile()
                            user_97.save_user_and_profile()
                            if ((gender in [User.GENDER_FEMALE, User.GENDER_MALE]) and (gender_to_match == [gender]) and (len({user_99.gender, user_97.gender, self.user_2.gender}) == 1)):
                                gender_string = self.user_2.get_gender()
                                self.assertIn(member=gender_string, container=[User.GENDER_FEMALE_STRING, User.GENDER_MALE_STRING])
                                self.assertEqual(first=gender_string, second=User.GENDERS_DICT.get(gender))
                            else:
                                gender_string = User.GENDER_OTHER_STRING
                                self.assertEqual(first=gender_string, second=User.GENDERS_DICT.get(User.GENDER_OTHER))
                            self._test_all_like_list_views_contain_strings(strings=[
                                self._list_to_title_dict_by_gender[gender_string],
                                self._list_from_title_dict_by_gender[gender_string],
                                self._list_mutual_title,
                            ])
                            gender_count_dict[gender_string] += 1
            expected_gender_count_dict = {
                User.GENDER_FEMALE_STRING: 1,
                User.GENDER_MALE_STRING: 1,
                User.GENDER_OTHER_STRING: 79,
            }
            self.assertDictEqual(d1=gender_count_dict, d2=expected_gender_count_dict)

        def test_like_list_views_titles_with_empty_lists(self):
            for user in User.objects.all().exclude(pk=self.user_1.pk):
                user.delete()
            self.user_2 = None
            self.user_3 = None
            self.user_4 = None
            self.user_5 = None
            self.to_likes = set()
            self.from_likes = set()
            self.mutual_likes = set()
            self.assertEqual(first=UserLike.objects.count(), second=0)
            self._test_all_like_list_views_contain_strings(strings=[
                self._list_to_title_dict_by_gender[User.GENDER_OTHER_STRING],
                self._list_from_title_dict_by_gender[User.GENDER_OTHER_STRING],
                self._list_mutual_title,
            ])
            gender_count_dict = {
                User.GENDER_FEMALE_STRING: 0,
                User.GENDER_MALE_STRING: 0,
                User.GENDER_OTHER_STRING: 0,
            }
            for gender in User.GENDER_VALID_VALUES:
                if (gender == User.GENDER_OTHER):
                    two_genders = [random.choice([User.GENDER_FEMALE, User.GENDER_MALE]), gender]
                else:
                    two_genders = [User.GENDER_FEMALE, User.GENDER_MALE]
                for gender_to_match in [User.GENDER_VALID_VALUES, [gender], two_genders]:
                    self.user_1.speedy_match_profile.gender_to_match = gender_to_match
                    self.user_1.save_user_and_profile()
                    if ((gender in [User.GENDER_FEMALE, User.GENDER_MALE]) and (gender_to_match == [gender])):
                        gender_string = User.GENDERS_DICT.get(gender)
                        self.assertIn(member=gender_string, container=[User.GENDER_FEMALE_STRING, User.GENDER_MALE_STRING])
                    else:
                        gender_string = User.GENDER_OTHER_STRING
                        self.assertEqual(first=gender_string, second=User.GENDERS_DICT.get(User.GENDER_OTHER))
                    self._test_all_like_list_views_contain_strings(strings=[
                        self._list_to_title_dict_by_gender[gender_string],
                        self._list_from_title_dict_by_gender[gender_string],
                        self._list_mutual_title,
                    ])
                    gender_count_dict[gender_string] += 1
            expected_gender_count_dict = {
                User.GENDER_FEMALE_STRING: 1,
                User.GENDER_MALE_STRING: 1,
                User.GENDER_OTHER_STRING: 7,
            }
            self.assertDictEqual(d1=gender_count_dict, d2=expected_gender_count_dict)

        def test_cannot_delete_users_with_queryset_delete(self):
            with self.assertRaises(NotImplementedError) as cm:
                User.objects.all().exclude(pk=self.user_1.pk).delete()
            self.assertEqual(first=str(cm.exception), second="delete is not implemented.")
            with self.assertRaises(NotImplementedError) as cm:
                User.objects.delete()
            self.assertEqual(first=str(cm.exception), second="delete is not implemented.")
            with self.assertRaises(NotImplementedError) as cm:
                User.objects.all().delete()
            self.assertEqual(first=str(cm.exception), second="delete is not implemented.")
            with self.assertRaises(NotImplementedError) as cm:
                User.objects.all().filter(pk=1).delete()
            self.assertEqual(first=str(cm.exception), second="delete is not implemented.")

        def test_cannot_delete_likes_with_queryset_delete(self):
            with self.assertRaises(NotImplementedError) as cm:
                UserLike.objects.delete()
            self.assertEqual(first=str(cm.exception), second="delete is not implemented.")
            with self.assertRaises(NotImplementedError) as cm:
                UserLike.objects.all().delete()
            self.assertEqual(first=str(cm.exception), second="delete is not implemented.")
            with self.assertRaises(NotImplementedError) as cm:
                UserLike.objects.filter(from_user=self.user_1, to_user=self.user_3).delete()
            self.assertEqual(first=str(cm.exception), second="delete is not implemented.")
            with self.assertRaises(NotImplementedError) as cm:
                UserLike.objects.all().exclude(pk=2).delete()
            self.assertEqual(first=str(cm.exception), second="delete is not implemented.")
Пример #5
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
Пример #6
0
    class LikeNotificationsTestCaseMixin(SpeedyCoreAccountsModelsMixin, SpeedyMatchLikesLanguageMixin):
        def set_up(self):
            super().set_up()
            self.user_1 = ActiveUserFactory()
            self.user_2 = ActiveUserFactory()

        def test_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)
            UserLike.objects.add_like(from_user=self.user_2, to_user=self.user_1)
            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_2.get_gender()])

        def test_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_1.speedy_match_profile.notify_on_like = User.NOTIFICATIONS_OFF
            self.user_1.save_user_and_profile()
            self.assertEqual(first=self.user_1.speedy_match_profile.notify_on_like, second=User.NOTIFICATIONS_OFF)
            self.assertEqual(first=self.user_2.speedy_match_profile.notify_on_like, second=User.NOTIFICATIONS_ON)
            UserLike.objects.add_like(from_user=self.user_2, to_user=self.user_1)
            self.assertEqual(first=len(mail.outbox), second=0)
Пример #7
0
    class ManagerMatchesTestCase(SiteTestCase):
        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)

        def test_set_up(self):
            self.assertEqual(first=User.objects.count(), second=5)

        def test_gender_doesnt_match_profile_in_matches_list(self):
            """
            Test that users with non-matching genders don't appear in matches list.
            """
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertTrue(self.user_4 in matches_list)
            self.user_4.speedy_match_profile.gender_to_match = [
                User.GENDER_FEMALE, User.GENDER_MALE
            ]
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertTrue(0 < len(matches_list) < 4)
            self.assertTrue(self.user_4 not in matches_list)
            self.user_4.speedy_match_profile.gender_to_match = User.GENDER_VALID_VALUES
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertTrue(self.user_4 in matches_list)
            self.user_5.speedy_match_profile.gender_to_match = [
                User.GENDER_OTHER
            ]
            self.user_5.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=0)
            self.assertTrue(self.user_4 not in matches_list)
            self.user_5.speedy_match_profile.gender_to_match = User.GENDER_VALID_VALUES
            self.user_5.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertTrue(self.user_4 in matches_list)
            self.user_5.speedy_match_profile.gender_to_match = [
                User.GENDER_FEMALE
            ]
            self.user_5.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=2)
            self.assertTrue(self.user_1 in matches_list)
            self.assertTrue(self.user_2 not in matches_list)
            self.assertTrue(self.user_3 in matches_list)
            self.assertTrue(self.user_4 not in matches_list)

        def test_matches_list_sorted_by_speedy_match_last_visit(self):
            """
            Test that SpeedyMatchSiteProfile.objects.get_matches() returns a matches list sorted by Speedy Match last visit time (if all ranks are equal).
            Speedy Net last visit time is ignored.
            """
            sleep(0.2)
            self.user_2.profile.update_last_visit()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_1)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(list1=matches_list[:1], list2=[self.user_2])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            sleep(0.1)
            self.user_3.speedy_match_profile.update_last_visit()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_1)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(list1=matches_list[:2],
                                 list2=[self.user_3, self.user_2])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            sleep(0.1)
            self.user_4.speedy_net_profile.update_last_visit()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_1)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(list1=matches_list[:2],
                                 list2=[self.user_3, self.user_2])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            sleep(0.1)
            self.user_4.speedy_match_profile.update_last_visit()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_1)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_4, self.user_3, self.user_2, self.user_5])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_4, self.user_3, self.user_2, self.user_1])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            self.user_3.speedy_match_profile.profile_description = (
                "Hi! " * 12).strip()
            self.user_3.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_4, self.user_2, self.user_1, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            self.user_3.speedy_match_profile.profile_description = self.user_5.speedy_match_profile.profile_description
            self.user_3.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_4, self.user_3, self.user_2, self.user_1])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            self.user_3.speedy_match_profile.match_description = ("Hi! " *
                                                                  8).strip()
            self.user_3.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_4, self.user_2, self.user_1, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            self.user_3.speedy_match_profile.match_description = self.user_5.speedy_match_profile.match_description
            self.user_3.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_4, self.user_3, self.user_2, self.user_1])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            self.user_3.speedy_match_profile.profile_picture_months_offset = 25
            self.user_3.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_4, self.user_2, self.user_1, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])
            self.user_3.speedy_match_profile.profile_picture_months_offset = 0
            self.user_3.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_4, self.user_3, self.user_2, self.user_1])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 5, 5])

        def test_matches_list_sorted_by_rank(self):
            sleep(0.2)
            self.user_3.speedy_match_profile.update_last_visit()
            self.user_1.diet = User.DIET_VEGAN
            self.user_2.diet = User.DIET_VEGETARIAN
            self.user_3.diet = User.DIET_CARNIST
            self.user_4.diet = User.DIET_VEGAN
            self.user_5.diet = User.DIET_CARNIST
            self.user_1.smoking_status = User.SMOKING_STATUS_NOT_SMOKING
            self.user_2.smoking_status = User.SMOKING_STATUS_NOT_SMOKING
            self.user_3.smoking_status = User.SMOKING_STATUS_NOT_SMOKING
            self.user_4.smoking_status = User.SMOKING_STATUS_SMOKING_OCCASIONALLY
            self.user_5.smoking_status = User.SMOKING_STATUS_SMOKING
            self.user_1.relationship_status = User.RELATIONSHIP_STATUS_SINGLE
            self.user_2.relationship_status = User.RELATIONSHIP_STATUS_DIVORCED
            self.user_3.relationship_status = User.RELATIONSHIP_STATUS_WIDOWED
            self.user_4.relationship_status = User.RELATIONSHIP_STATUS_MARRIED
            self.user_5.relationship_status = User.RELATIONSHIP_STATUS_IN_RELATIONSHIP
            self.user_5.speedy_match_profile.diet_match = {
                str(User.DIET_VEGAN): 2,
                str(User.DIET_VEGETARIAN): 4,
                str(User.DIET_CARNIST): 5
            }
            self.user_5.speedy_match_profile.smoking_status_match = {
                str(User.SMOKING_STATUS_NOT_SMOKING): 5,
                str(User.SMOKING_STATUS_SMOKING_OCCASIONALLY): 1,
                str(User.SMOKING_STATUS_SMOKING): 0
            }
            self.user_5.speedy_match_profile.relationship_status_match[str(
                User.RELATIONSHIP_STATUS_MARRIED
            )] = SpeedyMatchSiteProfile.RANK_3
            self.user_2.speedy_match_profile.relationship_status_match[str(
                User.RELATIONSHIP_STATUS_IN_RELATIONSHIP
            )] = SpeedyMatchSiteProfile.RANK_2
            self.user_2.speedy_match_profile.relationship_status_match[str(
                User.RELATIONSHIP_STATUS_IN_OPEN_RELATIONSHIP
            )] = SpeedyMatchSiteProfile.RANK_1
            self.user_2.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_3.save_user_and_profile()
            self.user_4.save_user_and_profile()
            self.user_5.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_3, self.user_2, self.user_1, self.user_4])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 4, 2, 1])
            self.user_5.speedy_match_profile.diet_match = {
                str(User.DIET_VEGAN): 5,
                str(User.DIET_VEGETARIAN): 4,
                str(User.DIET_CARNIST): 2
            }
            self.user_5.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertListEqual(
                list1=matches_list,
                list2=[self.user_1, self.user_2, self.user_3, self.user_4])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 4, 2, 1])
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_3, self.user_1, self.user_5])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 2])
            self.user_5.speedy_match_profile.relationship_status_match[str(
                User.RELATIONSHIP_STATUS_DIVORCED
            )] = SpeedyMatchSiteProfile.RANK_0
            self.user_5.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=2)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_3, self.user_1])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5])
            self.user_4.relationship_status = User.RELATIONSHIP_STATUS_IN_OPEN_RELATIONSHIP
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_3, self.user_1, self.user_4])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 5, 1])
            self.user_3.relationship_status = User.RELATIONSHIP_STATUS_IN_OPEN_RELATIONSHIP
            self.user_3.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_3, self.user_4])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            sleep(0.01)
            self.user_4.speedy_match_profile.update_last_visit()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_4, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_1.speedy_match_profile.profile_description = (
                "Hi! " * 12).strip()
            self.user_1.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_4, self.user_3, self.user_1])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[1, 1, 5])
            self.user_1.speedy_match_profile.profile_description = self.user_2.speedy_match_profile.profile_description
            self.user_1.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_4, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_1.speedy_match_profile.match_description = ("Hi! " *
                                                                  8).strip()
            self.user_1.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_4, self.user_3, self.user_1])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[1, 1, 5])
            self.user_1.speedy_match_profile.match_description = self.user_2.speedy_match_profile.match_description
            self.user_1.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_4, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_4.speedy_match_profile.profile_description = (
                "One two three four " * 4 + " five ").strip()
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_3, self.user_4])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_4.speedy_match_profile.profile_description = (
                "One two three four " * 3 + " five six ").strip()
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_4, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_4.speedy_match_profile.profile_description = self.user_2.speedy_match_profile.profile_description
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_4, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_4.speedy_match_profile.match_description = (
                "One two three four " * 3 + " five ").strip()
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_3, self.user_4])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_4.speedy_match_profile.match_description = (
                "One two three four " * 3 + " five six ").strip()
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_4, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_4.speedy_match_profile.match_description = self.user_2.speedy_match_profile.match_description
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_4, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_4.speedy_match_profile.profile_picture_months_offset = 25
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_3, self.user_4])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            self.user_4.speedy_match_profile.profile_picture_months_offset = 0
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_2)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertListEqual(list1=matches_list,
                                 list2=[self.user_1, self.user_4, self.user_3])
            self.assertListEqual(
                list1=[u.speedy_match_profile.rank for u in matches_list],
                list2=[5, 1, 1])
            # Canceled - the order of users is now random and depends on the date and their ID.
            # self.user_1.date_created -= relativedelta(days=20)
            # self.user_2.date_created -= relativedelta(days=20)
            # self.user_3.date_created -= relativedelta(days=20)
            # self.user_4.date_created -= relativedelta(days=20)
            # self.user_5.date_created -= relativedelta(days=20)
            # self.user_1.speedy_match_profile.last_visit -= relativedelta(days=8)
            # self.user_2.speedy_match_profile.last_visit -= relativedelta(days=8)
            # self.user_3.speedy_match_profile.last_visit -= relativedelta(days=8)
            # self.user_4.speedy_match_profile.last_visit -= relativedelta(days=8)
            # self.user_5.speedy_match_profile.last_visit -= relativedelta(days=8)
            # self.user_1.save_user_and_profile()
            # self.user_2.save_user_and_profile()
            # self.user_3.save_user_and_profile()
            # self.user_4.save_user_and_profile()
            # self.user_5.save_user_and_profile()
            # matches_list = SpeedyMatchSiteProfile.objects.get_matches(user=self.user_2)
            # self.assertEqual(first=len(matches_list), second=3)
            # self.assertListEqual(list1=matches_list, list2=[self.user_1, self.user_4, self.user_3])
            # self.assertListEqual(list1=[u.speedy_match_profile.rank for u in matches_list], list2=[5, 1, 1])
            # today = date.today()
            # self.user_4.date_of_birth = today - relativedelta(years=20)
            # self.user_4.speedy_match_profile.height = 115
            # self.user_4.save_user_and_profile()
            # matches_list = SpeedyMatchSiteProfile.objects.get_matches(user=self.user_2)
            # self.assertEqual(first=len(matches_list), second=3)
            # self.assertListEqual(list1=matches_list, list2=[self.user_1, self.user_3, self.user_4])
            # self.assertListEqual(list1=[u.speedy_match_profile.rank for u in matches_list], list2=[5, 1, 1])
            # self.user_4.speedy_match_profile.height = 240
            # self.user_4.save_user_and_profile()
            # matches_list = SpeedyMatchSiteProfile.objects.get_matches(user=self.user_2)
            # self.assertEqual(first=len(matches_list), second=3)
            # self.assertListEqual(list1=matches_list, list2=[self.user_1, self.user_3, self.user_4])
            # self.assertListEqual(list1=[u.speedy_match_profile.rank for u in matches_list], list2=[5, 1, 1])
            # self.user_4.speedy_match_profile.height = 75
            # self.user_4.save_user_and_profile()
            # matches_list = SpeedyMatchSiteProfile.objects.get_matches(user=self.user_2)
            # self.assertEqual(first=len(matches_list), second=2)
            # self.assertListEqual(list1=matches_list, list2=[self.user_1, self.user_3])
            # self.assertListEqual(list1=[u.speedy_match_profile.rank for u in matches_list], list2=[5, 1])
            # self.user_4.speedy_match_profile.height = 330
            # self.user_4.save_user_and_profile()
            # matches_list = SpeedyMatchSiteProfile.objects.get_matches(user=self.user_2)
            # self.assertEqual(first=len(matches_list), second=2)
            # self.assertListEqual(list1=matches_list, list2=[self.user_1, self.user_3])
            # self.assertListEqual(list1=[u.speedy_match_profile.rank for u in matches_list], list2=[5, 1])
            # self.user_4.speedy_match_profile.height = 180
            # self.user_4.save_user_and_profile()
            # matches_list = SpeedyMatchSiteProfile.objects.get_matches(user=self.user_2)
            # self.assertEqual(first=len(matches_list), second=3)
            # self.assertListEqual(list1=matches_list, list2=[self.user_1, self.user_4, self.user_3])
            # self.assertListEqual(list1=[u.speedy_match_profile.rank for u in matches_list], list2=[5, 1, 1])

        def test_photo_not_visible_doesnt_match_profile_in_matches_list(self):
            """
            Test that users with invisible photos don't appear in matches list, but their matches are not affected.
            """
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertTrue(self.user_4 in matches_list)
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_4)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertTrue(self.user_5 in matches_list)
            self.user_4.photo.visible_on_website = False
            self.user_4.photo.save()
            self.user_4.save_user_and_profile()
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_5)
            self.assertEqual(first=len(matches_list), second=3)
            self.assertTrue(self.user_4 not in matches_list)
            matches_list = SpeedyMatchSiteProfile.objects.get_matches(
                user=self.user_4)
            self.assertEqual(first=len(matches_list), second=4)
            self.assertTrue(self.user_5 in matches_list)

        def test_cannot_delete_site_profiles_with_queryset_delete(self):
            with self.assertRaises(NotImplementedError) as cm:
                SpeedyMatchSiteProfile.objects.delete()
            self.assertEqual(first=str(cm.exception),
                             second="delete is not implemented.")
            with self.assertRaises(NotImplementedError) as cm:
                SpeedyMatchSiteProfile.objects.all().delete()
            self.assertEqual(first=str(cm.exception),
                             second="delete is not implemented.")
            with self.assertRaises(NotImplementedError) as cm:
                SpeedyMatchSiteProfile.objects.filter(pk=1).delete()
            self.assertEqual(first=str(cm.exception),
                             second="delete is not implemented.")
            with self.assertRaises(NotImplementedError) as cm:
                SpeedyMatchSiteProfile.objects.all().exclude(pk=2).delete()
            self.assertEqual(first=str(cm.exception),
                             second="delete is not implemented.")
Пример #8
0
    class SendMessageToUserViewTestCaseMixin(SpeedyCoreAccountsModelsMixin,
                                             SpeedyCoreMessagesLanguageMixin):
        def set_up(self):
            super().set_up()
            self.user_1 = ActiveUserFactory()
            self.user_2 = ActiveUserFactory()
            self.page_url = '/messages/{}/compose/'.format(self.user_2.slug)
            self.data = {
                'text': 'Hi Hi Hi',
            }

        def test_visitor_has_no_access(self):
            self.client.logout()
            r = self.client.get(path=self.page_url)
            self.assertRedirects(response=r,
                                 expected_url='/login/?next={}'.format(
                                     self.page_url),
                                 status_code=302,
                                 target_status_code=200)
            r = self.client.post(path=self.page_url, data=self.data)
            self.assertRedirects(response=r,
                                 expected_url='/login/?next={}'.format(
                                     self.page_url),
                                 status_code=302,
                                 target_status_code=200)

        def test_user_cannot_send_message_to_self(self):
            self.client.login(username=self.user_2.slug,
                              password=tests_settings.USER_PASSWORD)
            r = self.client.get(path=self.page_url)
            self.assertEqual(first=r.status_code, second=403)
            r = self.client.post(path=self.page_url, data=self.data)
            self.assertEqual(first=r.status_code, second=403)

        def test_user_can_see_a_form(self):
            self.client.login(username=self.user_1.slug,
                              password=tests_settings.USER_PASSWORD)
            r = self.client.get(path=self.page_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertTemplateUsed(response=r,
                                    template_name='messages/message_form.html')

        def test_user_gets_redirected_to_existing_chat(self):
            chat = Chat.objects.chat_with(ent1=self.user_1, ent2=self.user_2)
            self.client.login(username=self.user_1.slug,
                              password=tests_settings.USER_PASSWORD)
            r = self.client.get(path=self.page_url)
            self.assertRedirects(response=r,
                                 expected_url='/messages/{}/'.format(
                                     self.user_2.slug),
                                 status_code=302,
                                 target_status_code=200)

        def test_user_can_submit_the_form_and_other_user_gets_notified_on_message_1(
                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.notify_on_message,
                             second=User.NOTIFICATIONS_ON)
            self.assertEqual(first=self.user_2.notify_on_message,
                             second=User.NOTIFICATIONS_ON)
            self.client.login(username=self.user_1.slug,
                              password=tests_settings.USER_PASSWORD)
            self.assertEqual(first=Message.objects.count(), second=0)
            r = self.client.post(path=self.page_url, data=self.data)
            self.assertEqual(first=Message.objects.count(), second=1)
            message = Message.objects.latest()
            chat = message.chat
            self.assertRedirects(response=r,
                                 expected_url='/messages/{}/'.format(
                                     chat.get_slug(current_user=self.user_1)),
                                 status_code=302,
                                 target_status_code=200)
            self.assertEqual(first=message.text, second='Hi Hi Hi')
            self.assertEqual(first=message.sender.id, second=self.user_1.id)
            self.assertEqual(first=chat.last_message, second=message)
            self.assertEqual(first=chat.ent1.id, second=self.user_1.id)
            self.assertEqual(first=chat.ent2.id, second=self.user_2.id)
            self.assertTrue(expr=chat.is_private)
            self.assertEqual(first=len(mail.outbox), second=1)
            self.assertEqual(
                first=mail.outbox[0].subject,
                second={
                    django_settings.SPEEDY_NET_SITE_ID:
                    self._you_have_a_new_message_on_speedy_net_subject,
                    django_settings.SPEEDY_MATCH_SITE_ID:
                    self._you_have_a_new_message_on_speedy_match_subject,
                }[self.site.id])

        def test_user_can_submit_the_form_and_other_user_gets_notified_on_message_2(
                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.notify_on_message,
                             second=User.NOTIFICATIONS_ON)
            self.assertEqual(first=self.user_2.notify_on_message,
                             second=User.NOTIFICATIONS_ON)
            self.client.login(username=self.user_1.slug,
                              password=tests_settings.USER_PASSWORD)
            self.assertEqual(first=Message.objects.count(), second=0)
            data = self.data.copy()
            data['text'] = "a" * 50000
            r = self.client.post(path=self.page_url, data=data)
            self.assertEqual(first=Message.objects.count(), second=1)
            message = Message.objects.latest()
            chat = message.chat
            self.assertRedirects(response=r,
                                 expected_url='/messages/{}/'.format(
                                     chat.get_slug(current_user=self.user_1)),
                                 status_code=302,
                                 target_status_code=200)
            self.assertEqual(first=message.text, second="a" * 50000)
            self.assertEqual(first=message.sender.id, second=self.user_1.id)
            self.assertEqual(first=chat.last_message, second=message)
            self.assertEqual(first=chat.ent1.id, second=self.user_1.id)
            self.assertEqual(first=chat.ent2.id, second=self.user_2.id)
            self.assertTrue(expr=chat.is_private)
            self.assertEqual(first=len(mail.outbox), second=1)
            self.assertEqual(
                first=mail.outbox[0].subject,
                second={
                    django_settings.SPEEDY_NET_SITE_ID:
                    self._you_have_a_new_message_on_speedy_net_subject,
                    django_settings.SPEEDY_MATCH_SITE_ID:
                    self._you_have_a_new_message_on_speedy_match_subject,
                }[self.site.id])

        def test_user_can_submit_the_form_and_other_user_doesnt_get_notified_on_message(
                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.notify_on_message = User.NOTIFICATIONS_OFF
            self.user_2.save_user_and_profile()
            self.assertEqual(first=self.user_1.notify_on_message,
                             second=User.NOTIFICATIONS_ON)
            self.assertEqual(first=self.user_2.notify_on_message,
                             second=User.NOTIFICATIONS_OFF)
            self.client.login(username=self.user_1.slug,
                              password=tests_settings.USER_PASSWORD)
            self.assertEqual(first=Message.objects.count(), second=0)
            r = self.client.post(path=self.page_url, data=self.data)
            self.assertEqual(first=Message.objects.count(), second=1)
            message = Message.objects.latest()
            chat = message.chat
            self.assertRedirects(response=r,
                                 expected_url='/messages/{}/'.format(
                                     chat.get_slug(current_user=self.user_1)),
                                 status_code=302,
                                 target_status_code=200)
            self.assertEqual(first=message.text, second='Hi Hi Hi')
            self.assertEqual(first=message.sender.id, second=self.user_1.id)
            self.assertEqual(first=chat.last_message, second=message)
            self.assertEqual(first=chat.ent1.id, second=self.user_1.id)
            self.assertEqual(first=chat.ent2.id, second=self.user_2.id)
            self.assertTrue(expr=chat.is_private)
            self.assertEqual(first=len(mail.outbox), second=0)

        def test_user_cannot_submit_the_form_with_text_too_long_1(self):
            self.client.login(username=self.user_1.slug,
                              password=tests_settings.USER_PASSWORD)
            self.assertEqual(first=Message.objects.count(), second=0)
            data = self.data.copy()
            data['text'] = "a" * 50001
            r = self.client.post(path=self.page_url, data=data)
            self.assertEqual(first=r.status_code, second=200)
            self.assertDictEqual(
                d1=r.context['form'].errors,
                d2=self.
                _ensure_this_value_has_at_most_max_length_characters_errors_dict_by_value_length(
                    value_length=50001))
            self.assertEqual(first=Message.objects.count(), second=0)

        def test_user_cannot_submit_the_form_with_text_too_long_2(self):
            self.client.login(username=self.user_1.slug,
                              password=tests_settings.USER_PASSWORD)
            self.assertEqual(first=Message.objects.count(), second=0)
            data = self.data.copy()
            data['text'] = "b" * 1000000
            r = self.client.post(path=self.page_url, data=data)
            self.assertEqual(first=r.status_code, second=200)
            self.assertDictEqual(
                d1=r.context['form'].errors,
                d2=self.
                _ensure_this_value_has_at_most_max_length_characters_errors_dict_by_value_length(
                    value_length=1000000))
            self.assertEqual(first=Message.objects.count(), second=0)
Пример #9
0
    class SendMessageRulesTestCase(SiteTestCase):
        def set_up(self):
            super().set_up()
            self.user_1 = ActiveUserFactory()
            self.user_2 = ActiveUserFactory()

        def _create_users(self, users_count):
            for i in range(users_count):
                setattr(self, "user_{}".format(3 + i), ActiveUserFactory())

        def test_cannot_send_message_to_self(self):
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_1))
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_1))

        def test_can_send_message_to_other_user(self):
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))

        def test_cannot_send_message_to_other_user_if_blocked(self):
            Block.objects.block(blocker=self.user_2, blocked=self.user_1)
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertFalse(expr=self.user_2.has_perm(perm='messages.send_message', obj=self.user_1))
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertFalse(expr=self.user_2.has_perm(perm='messages.view_send_message_button', obj=self.user_1))

        def test_can_send_message_to_other_user_if_didnt_send_too_many_emails_1(self):
            self._create_users(users_count=6)
            chats = dict()
            for i in range(4):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='*****@*****.**')
                sleep(0.01)
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))

        def test_can_send_message_to_other_user_if_didnt_send_too_many_emails_2(self):
            self._create_users(users_count=6)
            chats = dict()
            for i in range(5):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='Hello!')
                sleep(0.01)
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))

        def test_cannot_send_message_to_other_user_if_sent_too_many_emails_1(self):
            self._create_users(users_count=6)
            chats = dict()
            for i in range(5):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='*****@*****.**')
                sleep(0.01)
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            Message.objects.send_message(from_entity=self.user_7, chat=chats[str(4)], text='Hello!')
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            chats[str(5)] = ChatFactory(ent1=self.user_1, ent2=self.user_8)
            Message.objects.send_message(from_entity=self.user_1, chat=chats[str(5)], text='Hello!')
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            Message.objects.send_message(from_entity=self.user_1, chat=chats[str(5)], text='*****@*****.**')
            self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            Message.objects.send_message(from_entity=self.user_8, chat=chats[str(5)], text='Hi.')
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))

        def test_cannot_send_message_to_other_user_if_sent_too_many_emails_2(self):
            self._create_users(users_count=20)
            chats = dict()
            for i in range(4):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='*****@*****.**')
                sleep(0.01)
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            for i in range(15):
                chats[str(4 + i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(4 + 3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(4 + i)], text='*****@*****.**')
                sleep(0.01)
                self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            for i in range(4):
                Message.objects.send_message(from_entity=getattr(self, "user_{}".format(3 + i)), chat=chats[str(i)], text='Hello!')
                sleep(0.01)
                self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            for i in range(12):
                Message.objects.send_message(from_entity=getattr(self, "user_{}".format(4 + 3 + i)), chat=chats[str(4 + i)], text='Hello!')
                sleep(0.01)
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
            self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))

        def test_cannot_send_message_to_other_user_if_sent_too_many_emails_3(self):
            self._create_users(users_count=30)
            self.user_1.date_created -= relativedelta(days=30)
            self.user_1.save_user_and_profile()
            chats = dict()
            for i in range(19):
                chats[str(i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(i)], text='*****@*****.**')
                sleep(0.01)
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
            for i in range(5):
                chats[str(19 + i)] = ChatFactory(ent1=self.user_1, ent2=getattr(self, "user_{}".format(19 + 3 + i)))
                Message.objects.send_message(from_entity=self.user_1, chat=chats[str(19 + i)], text='*****@*****.**')
                sleep(0.01)
                self.assertFalse(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.send_message', obj=self.user_3))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_2))
                self.assertTrue(expr=self.user_1.has_perm(perm='messages.view_send_message_button', obj=self.user_3))
Пример #10
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
Пример #11
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
Пример #12
0
    class UserDetailViewTestCaseMixin(object):
        def set_up(self):
            super().set_up()
            self.random_choice = random.choice([1, 2])
            if (self.random_choice == 1):
                self.user = ActiveUserFactory(first_name_en="Corrin",
                                              last_name_en="Gideon",
                                              slug="corrin-gideon",
                                              date_of_birth=date(year=1992,
                                                                 month=9,
                                                                 day=12),
                                              gender=User.GENDER_FEMALE)
                self.user.first_name_he = "קורין"
                self.user.last_name_he = "גדעון"
            elif (self.random_choice == 2):
                self.user = ActiveUserFactory(first_name_en="Jennifer",
                                              last_name_en="Connelly",
                                              slug="jennifer-connelly",
                                              date_of_birth=date(year=1978,
                                                                 month=1,
                                                                 day=31),
                                              gender=User.GENDER_FEMALE)
                self.user.first_name_he = "ג'ניפר"
                self.user.last_name_he = "קונלי"
            else:
                raise NotImplementedError()
            self.user.save()
            self.user_profile_url = '/{}/'.format(self.user.slug)
            self.other_user = ActiveUserFactory()

        def deactivate_user(self):
            self.user.is_active = False
            self.user.save()

        def test_user_profile_not_logged_in(self):
            r = self.client.get(path=self.user_profile_url)
            if (django_settings.SITE_ID == django_settings.SPEEDY_NET_SITE_ID):
                # First, check if the date of birth is not visible.
                self.assertEqual(first=r.status_code, second=200)
                self.assertIn(member=escape(self.full_name),
                              container=r.content.decode())
                self.assertIn(member="<title>{}</title>".format(
                    escape(self.expected_title[self.site.id])),
                              container=r.content.decode())
                self.assertNotIn(member=escape(self.birth_date),
                                 container=r.content.decode())
                self.assertNotIn(member=escape(self.birth_year),
                                 container=r.content.decode())
                self.assertNotIn(member=escape(self.user_birth_date),
                                 container=r.content.decode())
                # Now, check if the date of birth is visible.
                self.user.access_dob_day_month = UserAccessField.ACCESS_ANYONE
                self.user.access_dob_year = UserAccessField.ACCESS_ANYONE
                self.user.save()
                r = self.client.get(path=self.user_profile_url)
                self.assertEqual(first=r.status_code, second=200)
                self.assertIn(member="<title>{}</title>".format(
                    escape(self.expected_title[self.site.id])),
                              container=r.content.decode())
                self.assertIn(member=escape(self.birth_date),
                              container=r.content.decode())
                self.assertNotIn(member=escape(self.birth_year),
                                 container=r.content.decode())
                self.assertIn(member=escape(self.user_birth_year),
                              container=r.content.decode())
                self.assertIn(member=escape(self.user_birth_date),
                              container=r.content.decode())
                self.assertNotIn(member=escape(self.not_user_birth_date),
                                 container=r.content.decode())
            elif (django_settings.SITE_ID ==
                  django_settings.SPEEDY_MATCH_SITE_ID):
                expected_url = '/login/?next={}'.format(self.user_profile_url)
                self.assertRedirects(response=r,
                                     expected_url=expected_url,
                                     status_code=302,
                                     target_status_code=200)
            else:
                raise NotImplementedError()
            self.deactivate_user()
            r = self.client.get(path=self.user_profile_url)
            if (django_settings.SITE_ID == django_settings.SPEEDY_NET_SITE_ID):
                self.assertEqual(first=r.status_code, second=404)
                self.assertIn(member="<title>{}</title>".format(
                    escape(self.expected_404_title[self.site.id])),
                              container=r.content.decode())
                self.assertIn(member=escape(self.expected_404_speedy_is_sorry),
                              container=r.content.decode())
            elif (django_settings.SITE_ID ==
                  django_settings.SPEEDY_MATCH_SITE_ID):
                expected_url = '/login/?next={}'.format(self.user_profile_url)
                self.assertRedirects(response=r,
                                     expected_url=expected_url,
                                     status_code=302,
                                     target_status_code=200)
            else:
                raise NotImplementedError()

        def test_user_own_profile_logged_in(self):
            self.client.login(username=self.user.slug,
                              password=tests_settings.USER_PASSWORD)
            r = self.client.get(path=self.user_profile_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertIn(member=escape(self.first_name),
                          container=r.content.decode())
            if (django_settings.SITE_ID == django_settings.SPEEDY_NET_SITE_ID):
                self.assertIn(member=escape(self.full_name),
                              container=r.content.decode())
            elif (django_settings.SITE_ID ==
                  django_settings.SPEEDY_MATCH_SITE_ID):
                self.assertNotIn(member=escape(self.full_name),
                                 container=r.content.decode())
            else:
                raise NotImplementedError()
            self.assertIn(member="<title>{}</title>".format(
                escape(self.expected_title[self.site.id])),
                          container=r.content.decode())
            self.assertIn(member=escape(self.birth_date),
                          container=r.content.decode())
            self.assertNotIn(member=escape(self.birth_year),
                             container=r.content.decode())
            self.assertIn(member=escape(self.user_birth_year),
                          container=r.content.decode())
            self.assertIn(member=escape(self.user_birth_date),
                          container=r.content.decode())
            self.assertNotIn(member=escape(self.not_user_birth_date),
                             container=r.content.decode())
            self.deactivate_user()
            r = self.client.get(path=self.user_profile_url)
            if (django_settings.SITE_ID == django_settings.SPEEDY_NET_SITE_ID):
                # ~~~~ TODO: should redirect to '/welcome/'.
                self.assertEqual(first=r.status_code, second=404)
                self.assertIn(member="<title>{}</title>".format(
                    escape(self.expected_404_title[self.site.id])),
                              container=r.content.decode())
                self.assertIn(member=escape(self.expected_404_speedy_is_sorry),
                              container=r.content.decode())
            elif (django_settings.SITE_ID ==
                  django_settings.SPEEDY_MATCH_SITE_ID):
                expected_url = '/welcome/'
                self.assertRedirects(response=r,
                                     expected_url=expected_url,
                                     status_code=302,
                                     target_status_code=200)
            else:
                raise NotImplementedError()

        def test_user_profile_month_day_format_from_friend(self):
            # First, check if only the day and month are visible.
            self.user.access_dob_day_month = UserAccessField.ACCESS_FRIENDS
            self.user.save()
            Friend.objects.add_friend(from_user=self.user,
                                      to_user=self.other_user).accept()
            self.assertTrue(expr=Friend.objects.are_friends(
                user1=self.user, user2=self.other_user))
            self.client.login(username=self.other_user.slug,
                              password=tests_settings.USER_PASSWORD)
            r = self.client.get(path=self.user_profile_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertIn(member=escape(self.first_name),
                          container=r.content.decode())
            if (django_settings.SITE_ID == django_settings.SPEEDY_NET_SITE_ID):
                self.assertIn(member=escape(self.full_name),
                              container=r.content.decode())
            elif (django_settings.SITE_ID ==
                  django_settings.SPEEDY_MATCH_SITE_ID):
                self.assertNotIn(member=escape(self.full_name),
                                 container=r.content.decode())
            else:
                raise NotImplementedError()
            self.assertIn(member="<title>{}</title>".format(
                escape(self.expected_title[self.site.id])),
                          container=r.content.decode())
            self.assertIn(member=escape(self.birth_date),
                          container=r.content.decode())
            self.assertNotIn(member=escape(self.birth_year),
                             container=r.content.decode())
            self.assertIn(member=escape(self.user_birth_month_day),
                          container=r.content.decode())
            self.assertNotIn(member=escape(self.user_birth_date),
                             container=r.content.decode())
            self.assertNotIn(member=escape(self.not_user_birth_month_day),
                             container=r.content.decode())
            self.assertNotIn(member=escape(self.not_user_birth_date),
                             container=r.content.decode())
            # Then, check if all the birth date is visible.
            self.user.access_dob_year = UserAccessField.ACCESS_FRIENDS
            self.user.save()
            r = self.client.get(path=self.user_profile_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertIn(member="<title>{}</title>".format(
                escape(self.expected_title[self.site.id])),
                          container=r.content.decode())
            self.assertIn(member=escape(self.birth_date),
                          container=r.content.decode())
            self.assertNotIn(member=escape(self.birth_year),
                             container=r.content.decode())
            self.assertIn(member=escape(self.user_birth_month_day),
                          container=r.content.decode())
            self.assertIn(member=escape(self.user_birth_year),
                          container=r.content.decode())
            self.assertIn(member=escape(self.user_birth_date),
                          container=r.content.decode())
            self.assertNotIn(member=escape(self.not_user_birth_month_day),
                             container=r.content.decode())
            self.assertNotIn(member=escape(self.not_user_birth_date),
                             container=r.content.decode())
            # Then, check if only the year is visible.
            self.user.access_dob_day_month = UserAccessField.ACCESS_ME
            self.user.save()
            r = self.client.get(path=self.user_profile_url)
            self.assertEqual(first=r.status_code, second=200)
            self.assertIn(member="<title>{}</title>".format(
                escape(self.expected_title[self.site.id])),
                          container=r.content.decode())
            self.assertNotIn(member=escape(self.birth_date),
                             container=r.content.decode())
            self.assertIn(member=escape(self.birth_year),
                          container=r.content.decode())
            self.assertNotIn(member=escape(self.user_birth_month_day),
                             container=r.content.decode())
            self.assertIn(member=escape(self.user_birth_year),
                          container=r.content.decode())
            self.assertNotIn(member=escape(self.user_birth_date),
                             container=r.content.decode())
            self.assertNotIn(member=escape(self.not_user_birth_month_day),
                             container=r.content.decode())
            self.assertNotIn(member=escape(self.not_user_birth_date),
                             container=r.content.decode())
            # Then logout and check that nothing from the date of birth is visible on Speedy Net.
            # On Speedy Match, the profile is not visible to visitors at all.
            self.client.logout()
            r = self.client.get(path=self.user_profile_url)
            if (django_settings.SITE_ID == django_settings.SPEEDY_NET_SITE_ID):
                self.assertEqual(first=r.status_code, second=200)
                self.assertIn(member="<title>{}</title>".format(
                    escape(self.expected_title[self.site.id])),
                              container=r.content.decode())
                self.assertNotIn(member=escape(self.birth_date),
                                 container=r.content.decode())
                self.assertNotIn(member=escape(self.birth_year),
                                 container=r.content.decode())
                self.assertNotIn(member=escape(self.user_birth_month_day),
                                 container=r.content.decode())
                self.assertNotIn(member=escape(self.user_birth_date),
                                 container=r.content.decode())
                self.assertNotIn(member=escape(self.not_user_birth_month_day),
                                 container=r.content.decode())
                self.assertNotIn(member=escape(self.not_user_birth_date),
                                 container=r.content.decode())
                # And then, check if only the day and month are visible again.
                self.user.access_dob_day_month = UserAccessField.ACCESS_ANYONE
                self.user.save()
                r = self.client.get(path=self.user_profile_url)
                self.assertEqual(first=r.status_code, second=200)
                self.assertIn(member="<title>{}</title>".format(
                    escape(self.expected_title[self.site.id])),
                              container=r.content.decode())
                self.assertIn(member=escape(self.birth_date),
                              container=r.content.decode())
                self.assertNotIn(member=escape(self.birth_year),
                                 container=r.content.decode())
                self.assertIn(member=escape(self.user_birth_month_day),
                              container=r.content.decode())
                self.assertNotIn(member=escape(self.user_birth_date),
                                 container=r.content.decode())
                self.assertNotIn(member=escape(self.not_user_birth_month_day),
                                 container=r.content.decode())
                self.assertNotIn(member=escape(self.not_user_birth_date),
                                 container=r.content.decode())
            elif (django_settings.SITE_ID ==
                  django_settings.SPEEDY_MATCH_SITE_ID):
                expected_url = '/login/?next={}'.format(self.user_profile_url)
                self.assertRedirects(response=r,
                                     expected_url=expected_url,
                                     status_code=302,
                                     target_status_code=200)
            else:
                raise NotImplementedError()
            self.client.login(username=self.other_user.slug,
                              password=tests_settings.USER_PASSWORD)
            if (django_settings.SITE_ID == django_settings.SPEEDY_MATCH_SITE_ID
                ):
                self.other_user.speedy_match_profile.min_age_to_match = 80
                self.other_user.save_user_and_profile()
                r = self.client.get(path=self.user_profile_url)
                self.assertEqual(first=r.status_code, second=404)
                self.assertNotIn(member="<title>{}</title>".format(
                    escape(self.expected_title[self.site.id])),
                                 container=r.content.decode())
                self.assertIn(member="<title>{}</title>".format(
                    escape(self.expected_title_no_match[self.site.id])),
                              container=r.content.decode())
                self.other_user.speedy_match_profile.min_age_to_match = 36
                self.other_user.save_user_and_profile()
                r = self.client.get(path=self.user_profile_url)
                if (self.random_choice == 1):
                    self.assertEqual(first=self.user.slug,
                                     second="corrin-gideon")
                    self.assertEqual(first=r.status_code, second=404)
                    self.assertNotIn(member="<title>{}</title>".format(
                        escape(self.expected_title[self.site.id])),
                                     container=r.content.decode())
                    self.assertIn(member="<title>{}</title>".format(
                        escape(self.expected_title_no_match[self.site.id])),
                                  container=r.content.decode())
                elif (self.random_choice == 2):
                    self.assertEqual(first=self.user.slug,
                                     second="jennifer-connelly")
                    self.assertEqual(first=r.status_code, second=200)
                    self.assertNotIn(member="<title>{}</title>".format(
                        escape(self.expected_title_no_match[self.site.id])),
                                     container=r.content.decode())
                    self.assertIn(member="<title>{}</title>".format(
                        escape(self.expected_title[self.site.id])),
                                  container=r.content.decode())
                else:
                    raise NotImplementedError()
                self.other_user.speedy_match_profile.min_age_to_match = 12
                self.other_user.save_user_and_profile()
                r = self.client.get(path=self.user_profile_url)
                self.assertEqual(first=r.status_code, second=200)
                self.assertNotIn(member="<title>{}</title>".format(
                    escape(self.expected_title_no_match[self.site.id])),
                                 container=r.content.decode())
                self.assertIn(member="<title>{}</title>".format(
                    escape(self.expected_title[self.site.id])),
                              container=r.content.decode())
            self.deactivate_user()
            r = self.client.get(path=self.user_profile_url)
            self.assertEqual(first=r.status_code, second=404)
            self.assertNotIn(member="<title>{}</title>".format(
                escape(self.expected_title[self.site.id])),
                             container=r.content.decode())
            if (django_settings.SITE_ID == django_settings.SPEEDY_MATCH_SITE_ID
                ):
                self.assertNotIn(member="<title>{}</title>".format(
                    escape(self.expected_title_no_match[self.site.id])),
                                 container=r.content.decode())
            self.assertIn(member="<title>{}</title>".format(
                escape(self.expected_404_title[self.site.id])),
                          container=r.content.decode())
            self.assertIn(member=escape(self.expected_404_speedy_is_sorry),
                          container=r.content.decode())

        def test_user_profile_deactivated_user_from_friend(self):
            Friend.objects.add_friend(from_user=self.user,
                                      to_user=self.other_user).accept()
            self.assertTrue(expr=Friend.objects.are_friends(
                user1=self.user, user2=self.other_user))
            self.client.login(username=self.other_user.slug,
                              password=tests_settings.USER_PASSWORD)
            self.deactivate_user()
            r = self.client.get(path=self.user_profile_url)
            self.assertEqual(first=r.status_code, second=404)
            self.assertIn(member="<title>{}</title>".format(
                escape(self.expected_404_title[self.site.id])),
                          container=r.content.decode())
            self.assertIn(member=escape(self.expected_404_speedy_is_sorry),
                          container=r.content.decode())
Пример #13
0
    class FriendListsTestCase(SiteTestCase):
        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()

        def test_site_all_friends_list(self):
            Friend.objects.add_friend(from_user=self.user_1,
                                      to_user=self.user_5).accept()
            Friend.objects.add_friend(from_user=self.user_1,
                                      to_user=self.user_4).accept()
            Friend.objects.add_friend(from_user=self.user_3,
                                      to_user=self.user_1).accept()
            Friend.objects.add_friend(from_user=self.user_1,
                                      to_user=self.user_2)
            self.user_1 = User.objects.get(pk=self.user_1.pk)
            self.assertTrue(
                expr=all([(friendship.to_user == self.user_1)
                          for friendship in self.user_1.all_friends]))
            users_list = [
                friendship.from_user for friendship in self.user_1.all_friends
            ]
            self.assertEqual(first=len(users_list),
                             second=len(self.user_1.all_friends))
            self.assertEqual(first=len(users_list),
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID: 3,
                                 django_settings.SPEEDY_MATCH_SITE_ID: 2
                             }[self.site.id])
            self.assertEqual(first=users_list,
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID:
                                 [self.user_3, self.user_4, self.user_5],
                                 django_settings.SPEEDY_MATCH_SITE_ID:
                                 [self.user_3, self.user_4]
                             }[self.site.id])
            self.assertTrue(expr=all([(friendship.to_user == self.user_1)
                                      for friendship in
                                      self.user_1.all_speedy_net_friends]))
            users_list = [
                friendship.from_user
                for friendship in self.user_1.all_speedy_net_friends
            ]
            self.assertEqual(first=len(users_list),
                             second=len(self.user_1.all_speedy_net_friends))
            self.assertEqual(first=len(users_list), second=3)
            self.assertEqual(first=users_list,
                             second=[self.user_3, self.user_4, self.user_5])
            if (django_settings.SITE_ID == django_settings.SPEEDY_NET_SITE_ID):
                self.assertEqual(first=self.user_1.all_friends,
                                 second=self.user_1.all_speedy_net_friends)
            elif (django_settings.SITE_ID ==
                  django_settings.SPEEDY_MATCH_SITE_ID):
                self.assertNotEqual(first=self.user_1.all_friends,
                                    second=self.user_1.all_speedy_net_friends)
            else:
                raise NotImplementedError()
            sleep(0.01)
            self.user_5.profile.update_last_visit()
            self.user_1 = User.objects.get(pk=self.user_1.pk)
            self.assertTrue(
                expr=all([(friendship.to_user == self.user_1)
                          for friendship in self.user_1.all_friends]))
            users_list = [
                friendship.from_user for friendship in self.user_1.all_friends
            ]
            self.assertEqual(first=len(users_list),
                             second=len(self.user_1.all_friends))
            self.assertEqual(first=len(users_list),
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID: 3,
                                 django_settings.SPEEDY_MATCH_SITE_ID: 2
                             }[self.site.id])
            self.assertEqual(first=users_list,
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID:
                                 [self.user_5, self.user_3, self.user_4],
                                 django_settings.SPEEDY_MATCH_SITE_ID:
                                 [self.user_3, self.user_4]
                             }[self.site.id])
            self.assertTrue(expr=all([(friendship.to_user == self.user_1)
                                      for friendship in
                                      self.user_1.all_speedy_net_friends]))
            users_list = [
                friendship.from_user
                for friendship in self.user_1.all_speedy_net_friends
            ]
            self.assertEqual(first=len(users_list),
                             second=len(self.user_1.all_speedy_net_friends))
            self.assertEqual(first=len(users_list), second=3)
            self.assertEqual(first=users_list,
                             second=[self.user_5, self.user_3, self.user_4])
            if (django_settings.SITE_ID == django_settings.SPEEDY_NET_SITE_ID):
                self.assertEqual(first=self.user_1.all_friends,
                                 second=self.user_1.all_speedy_net_friends)
            elif (django_settings.SITE_ID ==
                  django_settings.SPEEDY_MATCH_SITE_ID):
                self.assertNotEqual(first=self.user_1.all_friends,
                                    second=self.user_1.all_speedy_net_friends)
            else:
                raise NotImplementedError()

        def test_site_received_friendship_requests_list(self):
            Friend.objects.add_friend(from_user=self.user_5,
                                      to_user=self.user_1)
            Friend.objects.add_friend(from_user=self.user_4,
                                      to_user=self.user_1).accept()
            Friend.objects.add_friend(from_user=self.user_3,
                                      to_user=self.user_1)
            Friend.objects.add_friend(from_user=self.user_1,
                                      to_user=self.user_2)
            Friend.objects.add_friend(from_user=self.user_6,
                                      to_user=self.user_1)
            self.user_1 = User.objects.get(pk=self.user_1.pk)
            self.assertTrue(
                expr=all([(friendship_request.to_user == self.user_1)
                          for friendship_request in
                          self.user_1.received_friendship_requests]))
            users_list = [
                friendship_request.from_user for friendship_request in
                self.user_1.received_friendship_requests
            ]
            self.assertEqual(first=len(users_list),
                             second=len(
                                 self.user_1.received_friendship_requests))
            self.assertEqual(first=len(users_list),
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID: 3,
                                 django_settings.SPEEDY_MATCH_SITE_ID: 2
                             }[self.site.id])
            self.assertEqual(first=users_list,
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID:
                                 [self.user_3, self.user_6, self.user_5],
                                 django_settings.SPEEDY_MATCH_SITE_ID:
                                 [self.user_3, self.user_6]
                             }[self.site.id])
            sleep(0.01)
            self.user_5.profile.update_last_visit()
            self.user_1 = User.objects.get(pk=self.user_1.pk)
            self.assertTrue(
                expr=all([(friendship_request.to_user == self.user_1)
                          for friendship_request in
                          self.user_1.received_friendship_requests]))
            users_list = [
                friendship_request.from_user for friendship_request in
                self.user_1.received_friendship_requests
            ]
            self.assertEqual(first=len(users_list),
                             second=len(
                                 self.user_1.received_friendship_requests))
            self.assertEqual(first=len(users_list),
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID: 3,
                                 django_settings.SPEEDY_MATCH_SITE_ID: 2
                             }[self.site.id])
            self.assertEqual(first=users_list,
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID:
                                 [self.user_5, self.user_3, self.user_6],
                                 django_settings.SPEEDY_MATCH_SITE_ID:
                                 [self.user_3, self.user_6]
                             }[self.site.id])

        def test_site_sent_friendship_requests_list(self):
            Friend.objects.add_friend(from_user=self.user_1,
                                      to_user=self.user_5)
            Friend.objects.add_friend(from_user=self.user_1,
                                      to_user=self.user_4).accept()
            Friend.objects.add_friend(from_user=self.user_3,
                                      to_user=self.user_1)
            Friend.objects.add_friend(from_user=self.user_1,
                                      to_user=self.user_2)
            Friend.objects.add_friend(from_user=self.user_1,
                                      to_user=self.user_6)
            self.user_1 = User.objects.get(pk=self.user_1.pk)
            self.assertTrue(
                expr=all([(friendship_request.from_user == self.user_1)
                          for friendship_request in
                          self.user_1.sent_friendship_requests]))
            users_list = [
                friendship_request.to_user
                for friendship_request in self.user_1.sent_friendship_requests
            ]
            self.assertEqual(first=len(users_list),
                             second=len(self.user_1.sent_friendship_requests))
            self.assertEqual(first=len(users_list),
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID: 3,
                                 django_settings.SPEEDY_MATCH_SITE_ID: 2
                             }[self.site.id])
            self.assertEqual(first=users_list,
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID:
                                 [self.user_2, self.user_6, self.user_5],
                                 django_settings.SPEEDY_MATCH_SITE_ID:
                                 [self.user_2, self.user_6]
                             }[self.site.id])
            sleep(0.01)
            self.user_5.profile.update_last_visit()
            self.user_1 = User.objects.get(pk=self.user_1.pk)
            self.assertTrue(
                expr=all([(friendship_request.from_user == self.user_1)
                          for friendship_request in
                          self.user_1.sent_friendship_requests]))
            users_list = [
                friendship_request.to_user
                for friendship_request in self.user_1.sent_friendship_requests
            ]
            self.assertEqual(first=len(users_list),
                             second=len(self.user_1.sent_friendship_requests))
            self.assertEqual(first=len(users_list),
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID: 3,
                                 django_settings.SPEEDY_MATCH_SITE_ID: 2
                             }[self.site.id])
            self.assertEqual(first=users_list,
                             second={
                                 django_settings.SPEEDY_NET_SITE_ID:
                                 [self.user_5, self.user_2, self.user_6],
                                 django_settings.SPEEDY_MATCH_SITE_ID:
                                 [self.user_2, self.user_6]
                             }[self.site.id])