コード例 #1
0
ファイル: test_models.py プロジェクト: danrr/SELP
class TestUserModel(BaseTest):
    def setUp(self):
        super(TestUserModel, self).setUp()
        self.user = User('Dan', '*****@*****.**', '12345')

    @patch('app.models.generate_password_hash')
    def test_user_model_can_init(self, patch_hash):
        user1 = User('Dan1', '*****@*****.**', '12345')
        self.assertEqual(user1.username, 'Dan1')
        self.assertEqual(user1.email, '*****@*****.**')
        patch_hash.assert_called_with('12345')
        self.assertEqual(user1.score, 0)

    def test_user_model_login_methods(self):
        self.assertEqual(self.user.is_authenticated(), True)
        self.assertEqual(self.user.is_active(), True)
        self.assertEqual(self.user.is_anonymous(), False)

    def test_user_model_can_increase_score(self):
        self.assertEqual(self.user.score, 0)
        self.user.increase_score(10)
        self.assertEqual(self.user.score, 10)

    @patch('app.models.generate_password_hash', Mock(return_value='abcdef'))
    @patch('app.models.check_password_hash')
    def test_user_model_can_check_password(self, patch_check_hash):
        user1 = User('Dan1', '*****@*****.**', '12345')
        user1.check_password('1234')
        patch_check_hash.assert_called_with('abcdef', '1234')

    def test_user_model_ranking(self):
        user1 = User('Dan1', '*****@*****.**', '12345')
        self.user.increase_score(10)
        db.session.add(self.user)
        db.session.add(user1)
        db.session.commit()
        self.assertEqual(self.user.get_rank(), 1)
        self.assertEqual(user1.get_rank(), 2)

    def test_user_model_get_olympic_rankings(self):
        user = User('dana', '*****@*****.**', '12345')
        db.session.add(self.user)
        db.session.add(user)
        self.assertEqual(User.get_full_rankings(), [(1, self.user), (1, user)])
        self.user.score = 10
        self.assertEqual(User.get_full_rankings(), [(1, self.user), (2, user)])