Exemple #1
0
    def test_all_players_in_game_give_the_same_value_to_the_table(self):
        """
        Pre: Create 2 tables. 1 with players who give the same value. 2 with
        with 1 player who give less than other players
        Output: True if all players 'in game' give the same value to the pool.
        """

        # Arrange
        player1 = Player(name=User(username='******'),
                         state='start',
                         round_money=10)
        player2 = Player(name=User(username='******'),
                         state='start',
                         round_money=10)
        player3 = Player(name=User(username='******'),
                         state='start',
                         round_money=10)
        player4 = Player(name=User(username='******'),
                         state='start',
                         round_money=9)
        table1 = Table(player1=player1,
                       player2=player2,
                       player3=player3,
                       player4=player4)
        table2 = Table(player1=player1, player2=player2)

        # Act
        result1 = table1.all_players_in_game_give_the_same_value_to_the_table()
        result2 = table2.all_players_in_game_give_the_same_value_to_the_table()

        # Assertion
        self.assertIsInstance(result1, bool)
        self.assertFalse(result1)
        self.assertIsInstance(result2, bool)
        self.assertTrue(result2)
Exemple #2
0
    def test_all_players_round_money_to_zero(self):
        """Set round_money to zero for all players"""

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, round_money=-99)
        player1.save()
        player2 = Player(name=us2, round_money=0)
        player2.save()
        player3 = Player(name=us3, round_money=99)
        player3.save()
        player4 = Player(name=us4, round_money=9)
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4)

        # Act
        table.all_players_round_money_to_zero()

        # Assertion
        self.assertEqual(table.player1.round_money, 0)
Exemple #3
0
    def test_all_players_in_game_make_decision(self):
        """
        Pre: Create table with 2 players with 'start' and 'out' state and 2
        players with 'raise' and 'check' state -> what means they made decisions.
        Output: True if all players 'in game' make a decision
        """

        # Arrange
        player1 = Player(name=User(username='******'), state='start')
        player2 = Player(name=User(username='******'), state='out')
        player3 = Player(name=User(username='******'), state='raise')
        player4 = Player(name=User(username='******'), state='check')
        table1 = Table(player1=player1,
                       player2=player2,
                       player3=player3,
                       player4=player4)
        table2 = Table(player3=player3, player4=player4)

        # Act
        result1 = table1.all_players_in_game_make_decision()
        result2 = table2.all_players_in_game_make_decision()

        # Assertion
        self.assertIsInstance(result1, bool)
        self.assertFalse(result1)
        self.assertIsInstance(result2, bool)
        self.assertTrue(result2)
Exemple #4
0
    def test_next_game_state_2_players(self):
        """Change current game state to the next from the game path"""

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        player1 = Player(name=us1, state='check')
        player1.save()
        player2 = Player(name=us2, state='check')
        player2.save()
        table = Table(player1=player1, player2=player2)

        # Act & Assertion
        self.assertEqual(table.game_state, 'ready')
        table.next_game_state()
        self.assertEqual(table.game_state, 'small_blind')
        table.next_game_state()
        self.assertEqual(table.game_state, 'give_2')
        table.next_game_state()
        self.assertEqual(table.game_state, 'give_3')
        table.next_game_state()
        self.assertEqual(table.game_state, 'give_1')
        table.next_game_state()
        self.assertEqual(table.game_state, 'give_1_again')
        table.next_game_state()
        self.assertEqual(table.game_state, 'winner')
        table.next_game_state()

        # In this plase should be 'again' but self.start_game_again() call
        # this table.next_game_state, so we jump to begin - 'ready' state
        self.assertEqual(table.game_state, 'ready')
Exemple #5
0
    def test_start_game_again(self):
        """Reset game and start them again with the same players"""

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, state='pass', round_money=1)
        player1.save()
        player2 = Player(name=us2, state='out', round_money=0)
        player2.save()
        player3 = Player(name=us3, state='check', round_money=99)
        player3.save()
        player4 = Player(name=us4, state='start', round_money=7)
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4,
                      game_state='again')

        # Act
        table.start_game_again()

        # Assertion
        self.assertEqual(table.game_state, 'ready')
        self.assertEqual(table.player1.state, 'start')
        self.assertEqual(table.player2.state, 'start')
        self.assertEqual(table.player3.state, 'start')
        self.assertEqual(table.player4.state, 'start')
Exemple #6
0
    def test_init(self):
        me = Player(123, "", 0, False, [])
        others = [Player(222, "", 0, False, []), Player(111, "", 0, False, [])]
        game = Game(0, 0, me.id, [me] + others, None, None, [])

        self.assertEqual(me, game.me)
        self.assertEqual(others, game.enemies)
Exemple #7
0
    def test_biggest_rate(self):
        """
        Should return the biggest value from all players from
        player.round_money field
        """

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, round_money=1)
        player1.save()
        player2 = Player(name=us2, round_money=0)
        player2.save()
        player3 = Player(name=us3, round_money=99)
        player3.save()
        player4 = Player(name=us4, round_money=7)
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4,
                      game_state='again')

        # Act
        result = table.biggest_rate()

        # Assertion
        self.assertEqual(result, 99)
Exemple #8
0
    def test_check_players_have_cards(self):
        """Return False if at least one player have cards"""

        # Arrange
        cards1 = str(Card.new('As')) + ',' + str(Card.new('9s'))
        cards2 = str(Card.new('Ah')) + ',' + str(Card.new('9h'))
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, cards=cards1)
        player1.save()
        player2 = Player(name=us2, cards=cards2)
        player2.save()
        player3 = Player(name=us3)
        player3.save()
        player4 = Player(name=us4)
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4)

        # Act
        result = table.check_players_have_cards()

        # Assertion
        self.assertFalse(result)
        table.remove_cards_from_players()
        result2 = table.check_players_have_cards()
        self.assertTrue(result2)
Exemple #9
0
 def test_init_unknown_player_id(self):
     unknown_id = 42
     players = [
         Player(222, "", 0, False, []),
         Player(111, "", 0, False, [])
     ]
     self.assertRaises(UnknownPlayerIdException, Game, 0, 0, unknown_id,
                       players, None, None, [])
Exemple #10
0
    def test_dealer_button(self):
        """
        Give dealer button to first player or next of previous gamer

        Dealer is always awarded to the first player if the table.dealer field
        is empty or to the next player inthe table.dealer field
        """

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, state='start')
        player1.save()
        player2 = Player(name=us2, state='start')
        player2.save()
        player3 = Player(name=us3, state='start')
        player3.save()
        player4 = Player(name=us4, state='start')
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4,
                      game_state='start')

        # Act & Assertion
        table.dealer_button()
        self.assertEqual(table.dealer, player1)

        table.game_state = 'start'
        table.dealer_button()
        self.assertEqual(table.dealer, player2)

        table.game_state = 'start'
        table.dealer_button()
        self.assertEqual(table.dealer, player3)

        table.game_state = 'start'
        table.dealer_button()
        self.assertEqual(table.dealer, player4)

        table.game_state = 'start'
        table.dealer_button()
        self.assertEqual(table.dealer, player1)
Exemple #11
0
    def test_start(self):
        """
        Set 'start' state for table and available players in table
        if number of players in this table is > 1
        and state of game is 'ready'
        """

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, state='check')
        player1.save()
        player2 = Player(name=us2, state='pass')
        player2.save()
        player3 = Player(name=us3, state='raise')
        player3.save()
        player4 = Player(name=us4, state='out')
        player4.save()
        table = Table(player1=player1)

        # Assertions & Acts

        # Only 1 player in table (table.start() should not working)
        self.assertEqual(table.game_state, 'ready')
        table.start()
        self.assertNotEqual(table.game_state, 'start')

        # 4 players in table (table.start() should works)
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4)
        self.assertEqual(table.game_state, 'ready')
        self.assertEqual(player1.state, 'check')
        self.assertEqual(player2.state, 'pass')
        self.assertEqual(player3.state, 'raise')
        self.assertEqual(player4.state, 'out')
        table.start()
        self.assertEqual(table.game_state, 'start')
        self.assertEqual(player1.state, 'start')
        self.assertEqual(player2.state, 'start')
        self.assertEqual(player3.state, 'start')
        self.assertEqual(player4.state, 'start')
Exemple #12
0
    def test_add_player(self):
        """Add Player to free space in table"""

        # Arrange
        player1 = Player(name=User(username='******'))
        player2 = Player(name=User(username='******'))
        player3 = Player(name=User(username='******'))
        player4 = Player(name=User(username='******'))
        table = Table(player1=player1, player2=player2, player4=player4)

        # Act
        table.add_player(player3)

        # Assertion
        self.assertEqual(table.player3, player3)
Exemple #13
0
def new_game(request, session_id):
    form = NewGame()

    # Форма по созданию игры
    if request.method == 'POST':
        form = NewGame(request.POST)
        if form.is_valid() and form['number'].value():
            if not Player.objects.filter(player_id=session_id):
                Player(player_id=session_id).save()
            Game(game_id=session_id, number=form['number'].value()).save()
            PlayerGameInfo(player_id=Player.objects.filter(
                player_id=session_id).values('id')[0]['id'],
                           game_id=Game.objects.order_by('-id').filter(
                               game_id=session_id).values('id')[0]['id'],
                           is_owner=True).save()
            return redirect('game_created',
                            game_id=Game.objects.order_by('-id').filter(
                                game_id=session_id).values('id')[0]['id'])

    return render(
        request,
        'new_game.html',
        {
            'form': form,
        },
    )
Exemple #14
0
def game(request):
    """
    receive a player name in a POST to create a new game
    return the newly created game object
    """
    if request.method == 'POST':  #create a new game
        game = Game()
        code = game.new_game()
        playername = request.data['player_name']
        player = Player(name=playername)
        player.join_game(code)

        game_serializer = GameSerializer(game)
        player_serializer = PlayerSerializer(player)

        #return a json object containing both the game and the player's object
        return Response({
            'game': game_serializer.data,
            'player': player_serializer.data
        })

    elif request.method == 'GET':  #retrieve info for an existing game
        if 'access_code' in request.query_params:
            game = Game.objects.get(
                access_code=request.query_params['access_code'])
            serializer = GameSerializer(game)
            return Response(serializer.data)
        else:
            return Response()
    def test_update_game_calls_send_actions(self):
        cells = [
            Cell(0, 5, 10, Vec2(0, 0), Vec2(1, 1)),
            Cell(1, 5, 10, Vec2(0, 0), Vec2(1, 1)),
            Cell(2, 5, 10, Vec2(0, 0), Vec2(1, 1))
        ]
        player = Player(0, "", 10, True, cells)
        game = Game(0, 0, 0, [player], Resources([], [], []), Map(0, 0), [])

        cells[0].target = Vec2(2, 2)
        cells[0].burst()

        cells[1].split()
        cells[1].trade(3)

        class MockApi:
            def send_actions(self, game_id, actions):
                self.actions = actions

        api = MockApi()

        update_game(api, game, lambda x: None)

        self.assertEqual(len(api.actions), 2)
        self.assertTrue(api.actions[0].target.almost_equals(Vec2(2, 2)))
        self.assertTrue(api.actions[0].burst)

        self.assertTrue(api.actions[1].split)
        self.assertEqual(3, api.actions[1].trade)
Exemple #16
0
def register(request):

    if request.method == "POST":
        form = RegistrationForm(request.POST)
        #?All of them seem to be connected with [email protected] why????
        #*Maybe it's because no one was logged in at this point???
        #!NOW I KNOW WHY. IT WAS BECAUSE I WAS LOGGED IN WITH [email protected] AND THE USER NEVER CHANGED.
        #*As proof, when I register when I am logged out, I runn into an attribute error at request.user.player.add
        #!SINCE THIS IS THE CASE I NEED TO CREATE THE PLAYER IN HOME PAGE
        if form.is_valid():
            #*I think I can just redirect to login
            #!I have to differentiate between what is done at registration vs login
            n = form.cleaned_data['username']
            p = Player(name=n, highscore=0)
            p.save()
            form.save()
            return redirect("/login")

    #*What I need to pass in the correct variables for register
    form = RegistrationForm()
    if request.user.is_authenticated:
        u = Player.objects.filter(name=request.user.get_username())[0]
        return render(request, "register/register.html", {
            "user": u,
            "logged_in": True,
            "form": form
        })
    else:
        return render(request, "register/register.html", {
            "logged_in": False,
            "form": form,
        })
Exemple #17
0
def create_player(user, game, players):
    """Create and return player.

    only return player if he is already created
    :param user: user who will be related to player
    :param game: game what will be related to player
    :return: Player object
    """
    players = players.order_by('in_game_order')
    player = players.filter(user=user).first()
    if player is None:
        player = Player(user=user,
                        name=user.username,
                        game=game,
                        chips=GameSerializer(game).data['starting_chips'],
                        is_in_game=True)
    else:
        player.is_in_game = True

    # set player in_game_order
    if len(players) < 1:
        player.in_game_order = 1
    else:
        player.in_game_order = players.reverse()[0].in_game_order + 1

    # update number of connected players
    game.players_connected = len(players)
    game.save()

    player.save()
    return player.id
Exemple #18
0
def find_player(request):
    if request.method == 'GET':
        player_name = request.GET.get('player-name')
        try:
            player = Player.objects.get(name=player_name)
        except ObjectDoesNotExist:
            player = Player(name=player_name, color='R').save()
            print("Player didn't exist, was created")
        return JsonResponse(player)
Exemple #19
0
    def test_give_2(self):
        """
        Give 2 cards to each active player if:
        - game state = give 2
        - each player have None cards
        """

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, state='start')
        player1.save()
        player2 = Player(name=us2, state='start')
        player2.save()
        player3 = Player(name=us3, state='start')
        player3.save()
        player4 = Player(name=us4, state='out')
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4,
                      game_state='give_2')
        table.fill_deck_by_all_cards()

        # Act
        table.give_2()

        # Assertion
        self.assertNotIn(player1.cards, table.deck)
        self.assertNotIn(player2.cards, table.deck)
        self.assertNotIn(player3.cards, table.deck)
        self.assertEqual(player4.cards, None)
        self.assertIsInstance(player1.cards, str)
        self.assertIsInstance(player2.cards, str)
        self.assertIsInstance(player3.cards, str)
        self.assertEqual(table.game_state, 'give_2')
Exemple #20
0
    def test_take_big_blind(self):
        """
        Take small blind from the next one from 'dealer player'

        Big blind is always awarded if players in table > 1
        - to the next player from the table.small_blind field
        """

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, state='start')
        player1.save()
        player2 = Player(name=us2, state='start')
        player2.save()
        player3 = Player(name=us3, state='start')
        player3.save()
        player4 = Player(name=us4, state='start')
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4,
                      game_state='small_blind',
                      dealer=player1,
                      small_blind=player2)

        # Act & Assertion
        table.take_big_blind()
        self.assertEqual(table.big_blind, player3)

        table.game_state = 'small_blind'
        table.dealer = player2
        table.small_blind = player3
        table.take_big_blind()
        self.assertEqual(table.big_blind, player4)
Exemple #21
0
    def test_give_1_again(self):
        """
        Give 1 card to the table if:
        - game state = give 1 again
        - on table is only 4 cards
        """

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1)
        player1.save()
        player2 = Player(name=us2)
        player2.save()
        player3 = Player(name=us3)
        player3.save()
        player4 = Player(name=us4)
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4,
                      game_state='give_3')
        table.fill_deck_by_all_cards()

        # Act
        table.give_3()
        table.next_game_state()
        table.give_1()
        table.next_game_state()
        table.give_1_again()

        # Assertion
        self.assertNotIn(table.cards_on_table, table.deck)
        self.assertIsInstance(table.cards_on_table, str)
        self.assertEqual(table.game_state, 'give_1_again')
Exemple #22
0
    def test_all_players_with_start_state(self):
        """
        Pre: Create table with 2 players with 'start' state
        and 1 player with 'out' state
        Output: List with players who have 'start' status
        """

        # Arrange
        player1 = Player(name=User(username='******'), state='start')
        player2 = Player(name=User(username='******'), state='out')
        player3 = Player(name=User(username='******'), state='start')
        table = Table(player1=player1, player2=player2, player3=player3)

        # Act
        result = table.all_players_with_start_state()
        to_compare = [player1, player3]

        # Assertion
        self.assertIsInstance(result, list)
        self.assertEqual(result, to_compare)
Exemple #23
0
    def test_the_winner(self):
        """Return winner in this table"""

        # Arrange
        cards1 = str(Card.new('2s')) + ',' + str(Card.new('3s'))
        cards2 = str(Card.new('4h')) + ',' + str(Card.new('5d'))
        cards3 = str(Card.new('6d')) + ',' + str(Card.new('7h'))
        cards4 = str(Card.new('As')) + ',' + str(Card.new('Ks'))
        cards_on_table = str(Card.new('Qs')) + ',' \
                         + str(Card.new('Js')) + ','\
                         + str(Card.new('Ts')) + ','\
                         + str(Card.new('2d')) + ','\
                         + str(Card.new('3d'))
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, cards=cards1, state='check')
        player1.save()
        player2 = Player(name=us2, cards=cards2, state='check')
        player2.save()
        player3 = Player(name=us3, cards=cards3, state='check')
        player3.save()
        player4 = Player(name=us4, cards=cards4, state='check')
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4,
                      cards_on_table=cards_on_table)

        # Act
        the_winner = table.the_winner()
        #print(the_winner)

        # Assertion
        self.assertEqual(the_winner, player4)
Exemple #24
0
    def add_player(self, nick: str, id: str) -> Player:
        existing_player: Player = self.get_player_by_nick(nick)
        if existing_player:
            logging.info(
                f"Player '{existing_player.nick}' reconnected with id '{id}'")
            existing_player.reconnect(id)
            return existing_player

        new_player = Player(nick, id)
        self.players.append(new_player)
        self.waiting_room.join(new_player)
        return new_player
    def create_players(self, users):
        """Create a list of Player instances from a list of User
           instances for testing."""

        players = []

        for i, user in enumerate(users):
            player = Player(user=user, nickname=f'Swindle_{i}')
            player.save()
            players.append(player)

        return players
Exemple #26
0
def _create_game(nb_player=4, game_name='test'):
    game = Game(name=game_name)
    game.save()
    user_names = ['Clément'] + ["bot_"+str(i) for i in range(nb_player-1)]
    players = []
    for user_name in user_names:
        user = User(username=user_name)
        user.save()
        player = Player(user=user, game=game)
        player.save()
        players.append(player)

    return game, players
Exemple #27
0
 def populate_players(self, faker: Faker):
     teams = Team.objects.all()
     for team in teams:
         for i in range(10):
             player = Player(id=str(uuid.uuid4()),
                             first_name=faker.first_name(),
                             last_name=faker.last_name(),
                             date_of_birth=faker.date(),
                             country=faker.country(),
                             height=round(decimal.Decimal(random.randrange(20000)) / 100, 2),
                             weight=round(decimal.Decimal(random.randrange(20000)) / 100, 2),
                             team=team)
             player.save()
     msg.good("Players data successfully populated")
Exemple #28
0
    def test_return_next(self):
        """
        Pre: List with players, and start_player
        Output: Player from list, next from start_player
        """

        # Arrange
        player1 = Player(name=User(username='******'))
        player2 = Player(name=User(username='******'))
        player3 = Player(name=User(username='******'))
        player4 = Player(name=User(username='******'))
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4)
        players_list = [player1, player2, player3, player4]

        # Acts & Assertions
        result = table.return_next(players_list, player4)
        self.assertIsInstance(result, Player)
        self.assertEqual(result, player1)

        result = table.return_next(players_list, player1)
        self.assertIsInstance(result, Player)
        self.assertEqual(result, player2)

        result = table.return_next(players_list, player2)
        self.assertIsInstance(result, Player)
        self.assertEqual(result, player3)

        result = table.return_next(players_list, player3)
        self.assertIsInstance(result, Player)
        self.assertEqual(result, player4)

        result = table.return_next(players_list, player4)
        self.assertIsInstance(result, Player)
        self.assertEqual(result, player1)
Exemple #29
0
    def test_set_all_in_game_players_state(self):
        """
        Pre: Create table with players with different states.
        Output: True if players without 'pass' or 'out' state have changed to
        'start' state.
        """

        # Arrange
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, state='pass')
        player1.save()
        player2 = Player(name=us2)
        player2.save()
        player3 = Player(name=us3, state='check')
        player3.save()
        player4 = Player(name=us4, state='start')
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4)

        # Act
        table.set_all_in_game_players_state('start')

        # Assertion
        self.assertEqual(table.player1.state, 'pass')
        self.assertEqual(table.player2.state, 'out')
        self.assertEqual(table.player3.state, 'start')
        self.assertEqual(table.player4.state, 'start')
Exemple #30
0
    def test_remove_cards_from_players(self):
        """Remove all cards from all players"""

        # Arrange
        cards1 = str(Card.new('As')) + ',' + str(Card.new('9s'))
        cards2 = str(Card.new('Ah')) + ',' + str(Card.new('9h'))
        cards3 = str(Card.new('Ad')) + ',' + str(Card.new('9d'))
        cards4 = str(Card.new('Ac')) + ',' + str(Card.new('9c'))
        us1 = User(username='******')
        us1.save()
        us2 = User(username='******')
        us2.save()
        us3 = User(username='******')
        us3.save()
        us4 = User(username='******')
        us4.save()
        player1 = Player(name=us1, cards=cards1)
        player1.save()
        player2 = Player(name=us2, cards=cards2)
        player2.save()
        player3 = Player(name=us3, cards=cards3)
        player3.save()
        player4 = Player(name=us4, cards=cards4)
        player4.save()
        table = Table(player1=player1,
                      player2=player2,
                      player3=player3,
                      player4=player4)

        # Act
        table.remove_cards_from_players()

        # Assertion
        self.assertEqual(table.player1.cards, None)
        self.assertEqual(table.player2.cards, None)
        self.assertEqual(table.player3.cards, None)
        self.assertEqual(table.player4.cards, None)