Exemplo n.º 1
0
    def test_methods(self):
        u1 = User(username='******', email='*****@*****.**', password='******')
        u2 = User(username='******', email='*****@*****.**', password='******')
        game = Game(current_author_points=7,
                    current_guest_points=8,
                    max_points=8,
                    author=u1,
                    guest=u2,
                    status='guest_win')
        db.session.add_all([u1, u2, game])
        db.session.commit()
        # checking wins
        self.assertFalse(game.is_user_win(u1))
        self.assertTrue(game.is_user_loss(u1))
        self.assertTrue(game.is_user_win(u2))
        self.assertFalse(game.is_user_loss(u2))

        # turn-related methods
        self.assertFalse(game.is_in_progress())
        game.status = 'author_turn_to_ask'
        db.session.commit()
        self.assertTrue(game.is_in_progress())
        self.assertTrue(game.is_turn(u1))
        self.assertFalse(game.is_turn(u2))
        game.status = 'waiting_author_answer'
        db.session.commit()
        self.assertTrue(game.is_waiting_answer_from(u1))
        self.assertFalse(game.is_waiting_answer_from(u2))

        # update score
        game.update_user_score(u1, 10)
        self.assertEqual(game.current_author_points, 17)

        # user validation methods
        self.assertTrue(game.is_author(u1))
        self.assertFalse(game.is_author(u2))

        u3 = User(username='******', email='*****@*****.**', password='******')
        self.assertTrue(game.validate_players(u1, u2))
        self.assertFalse(game.validate_players(u1, u3))

        self.assertEqual(game.get_opponent(u1), u2)
        self.assertEqual(game.get_opponent(u2), u1)

        # win update
        game2 = Game(current_author_points=7,
                     current_guest_points=8,
                     max_points=8,
                     author=u1,
                     guest=u2,
                     status='author_turn_to_ask')
        game2.win_update()
        self.assertTrue(game2.status == 'guest_win')

        # turn_update
        game3 = Game(current_author_points=7,
                     current_guest_points=8,
                     max_points=8,
                     author=u1,
                     guest=u2,
                     status='author_turn_to_ask')
        self.assertEqual(game3.status, 'author_turn_to_ask')
        game3.turn_update()
        self.assertEqual(game3.status, 'waiting_guest_answer')
        game3.turn_update()
        self.assertEqual(game3.status, 'guest_turn_to_ask')
        game3.turn_update()
        self.assertEqual(game3.status, 'waiting_author_answer')
        game3.turn_update()
        self.assertEqual(game3.status, 'author_turn_to_ask')

        # accept game
        game4 = Game(current_author_points=7,
                     current_guest_points=8,
                     max_points=8,
                     author=u1,
                     guest=u2,
                     status='not_confirmed')
        game4.accept_game()
        self.assertTrue(game4.status == 'author_turn_to_ask'
                        or game4.status == 'guest_turn_to_ask')