async def _test_movement(self): async with ClientSession() as session: ws_url = f'{self.live_server_url}/{GAME_WS_URL}' async with session.ws_connect(ws_url) as ws: response = await ws.receive() data = json.loads(response.data) self.assertEqual(data['event'], MazeConsumer.NEW_MAZE_EVENT, msg='First event not new maze') # create maze on data from response maze = Maze(is_generate=False) maze.matrix_walls = data['content']['maze']['matrix'] maze.x = data['content']['maze']['current_x'] maze.y = data['content']['maze']['current_y'] maze.max_depth_x = data['content']['maze']['current_x'] maze.max_depth_y = data['content']['maze']['max_depth_y'] # go to some free path direction free_path = maze.get_access_paths()[0] await ws.send_json({ 'event': MazeConsumer.MOVE_EVENT, 'content': free_path }) maze.go_to(free_path) while True: # possible events: TIMER_EVENT and NEW_COORD_EVENT response = await ws.receive() data = json.loads(response.data) if data['event'] == MazeConsumer.TIMER_EVENT: continue elif data['event'] == MazeConsumer.NEW_COORD_EVENT: self.assertEqual( (maze.x, maze.y), (data['content'][0], data['content'][1]), msg='Bad coordinates') break else: self.assertTrue(False, msg='Unexpected event')