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)])