Ejemplo n.º 1
0
        async def my_coroutine():
            gm = GameManager()
            future = asyncio.get_running_loop().create_future()
            player = Player(future, None)
            player.send_announcement = AsyncMock()

            # Do not set result on purpose so that we know that it's blocking on this.
            # future.set_result(None)

            # Indirectly I can be confident that it timed out waiting for future.
            with self.assertRaises(asyncio.TimeoutError):
                await asyncio.wait_for(gm.wait_until_game_complete(player),
                                       timeout=1)

            self.assertEqual(len(gm.waiting_players), 1,
                             "Number of waiting players must be 1")

            player.send_announcement.assert_called_once()

            gm.waiting_players.clear()

            # Now let's see if it's not blocked.
            future = asyncio.get_running_loop().create_future()
            player = Player(future, None)
            future.set_result(None)
            player.send_announcement = AsyncMock()

            await asyncio.wait_for(gm.wait_until_game_complete(player),
                                   timeout=1)

            self.assertEqual(len(gm.waiting_players), 1,
                             "Number of waiting players must be 1")

            player.send_announcement.assert_called_once()
Ejemplo n.º 2
0
    def test_send_announcement(self):
        """Tests that Player.send_announcement() calls websocket send()
        """
        websocket = MagicMock()
        send = AsyncMock()
        websocket.attach_mock(send, 'send')

        player = Player(None, websocket)
        asyncio.run(player.send_announcement("Breaking News!!!"))

        send.assert_called_once_with(
            '{"id": 1, "method": "announcement", "params": {"message": "Breaking News!!!"}}'
        )
Ejemplo n.º 3
0
        async def my_coroutine():
            gm = GameManager()

            for i in range(0, config.CONFIG_PLAYERS_PER_GAME):
                future = asyncio.get_running_loop().create_future()
                player = Player(future, None)
                future.set_result(None)
                player.send_announcement = AsyncMock()

                await asyncio.wait_for(gm.wait_until_game_complete(player),
                                       timeout=1)

            self.assertEqual(len(gm.waiting_players), 0,
                             "Number of waiting players must be 0")

            run.assert_called_once()