예제 #1
0
    def test_user_get_posts_by_followers1(self):
        """Should only return posts from users I'm following"""
        user1 = UserFactory()
        user2 = UserFactory()
        user3 = UserFactory()
        user4 = UserFactory()

        user2_post1 = TextPost('Hello there friends', timestamp=datetime(2017, 2, 2))
        user2_post2 = TextPost('Hello there friends', timestamp=datetime(2017, 2, 3))
        user3_post1 = TextPost('Hello there friends', timestamp=datetime(2017, 2, 1))
        user4_post1 = TextPost('Hello there friends', timestamp=datetime(2017, 2, 3))

        user2.add_post(user2_post1)
        user2.add_post(user2_post2)
        
        user3.add_post(user3_post1)
        user4.add_post(user4_post1)

        # user1 follows user2 and user3
        user1.follow(user2)
        user1.follow(user3)

        # 2 posts from user2 and 1 from user3
        # post from user4 is excluded
        self.assertEqual(len(user1.get_timeline()), 3)

        self.assertFalse(user4_post1 in user1.get_timeline())

        # should be sorted by creation timestamp
        self.assertEqual(user1.get_timeline(), [
            user2_post2,
            user2_post1,
            user3_post1
        ])
예제 #2
0
 def test_user_follow(self):
     user1 = UserFactory()
     user2 = UserFactory()
     user1.follow(user2)
     self.assertEqual(len(user1.following), 1)
     self.assertTrue(user2 in user1.following)
예제 #3
0
class TestUserModel(TestHelper):
    def setUp(self):
        self.post = PostFactory()
        self.user = UserFactory(posts=(self.post, ))
        db.session.commit()

    def test_UserModel_password_hashing_must_return_True_for_equals_passwords(
            self):
        test_password = '******'
        self.user.set_password(test_password)
        self.assertTrue(self.user.check_password(test_password))

    def test_UserModel_password_hashing_must_return_False_for_non_equals_passwords(
            self):
        self.user.set_password('test_password')
        self.assertFalse(self.user.check_password('other_pass'))

    def test_UserModel_must_have_post(self):
        posts = self.user.posts.all()
        self.assertListEqual([self.post], posts)

    def test_UserModel_must_return_empty_list_if_user_have_not_posts(self):
        self.user.posts.delete()
        self.assertListEqual([], self.user.posts.all())

    def test_UserModel_is_exist_classmethod_must_return_True_for_exist_user(
            self):
        self.assertTrue(User.is_exist(username=self.user.username))

    def test_UserModel_is_exist_classmethod_must_return_False_for_not_existed_user(
            self):
        self.assertFalse(
            User.is_exist(username='******'))

    def test_UserModel_is_following_method_must_return_False_if_new_user_not_in_followed_list(
            self):
        new_user = UserFactory()
        self.assertFalse(self.user.is_following(new_user))

    def test_UserModel_is_following_method_must_return_True_if_new_user_in_followed_list(
            self):
        new_user = UserFactory()
        self.user.followed.append(new_user)
        self.assertTrue(self.user.is_following(new_user))

    def test_UserModel_follow_method_must_append_new_user_to_followed(self):
        new_user = UserFactory()
        self.user.follow(new_user)
        self.assertIn(new_user, self.user.followed.all())

    def test_UserModel_follow_method_must_append_user_to_followers_of_new_user(
            self):
        new_user = UserFactory()
        self.user.follow(new_user)
        self.assertIn(self.user, new_user.followers.all())

    def test_UserModel_unfollow_method_must_remove_new_user_from_followed_list_of_user(
            self):
        new_user = UserFactory()
        self.user.followed.append(new_user)
        self.user.unfollow(new_user)
        self.assertNotIn(new_user, self.user.followed.all())
        self.assertNotIn(self.user, new_user.followers.all())

    def test_UserModel_followed_post_must_returned_list_must_contain_post1_and_post2(
            self):
        new_user = UserFactory()
        post1 = PostFactory(author=new_user)
        post2 = PostFactory(author=new_user)
        self.user.followed.append(new_user)
        user_posts = self.user.followed_posts().all()
        self.assertIn(post1, user_posts)
        self.assertIn(post2, user_posts)

    def test_UserModel_followed_post_must_return_list_of_new_user_posts_with_own_user_posts(
            self):
        new_user = UserFactory()
        post1 = PostFactory(author=new_user)
        post2 = PostFactory(author=new_user)
        self.user.followed.append(new_user)
        expected = [post2, post1, *self.user.posts.all()]
        self.assertListEqual(expected, list(self.user.followed_posts()))