async def test_update_calls_interact_with_game(backend: ConnectionBackend, interact_fails, expected_game, connected_game): # Setup backend.connector = None backend._world = True backend.set_expected_game(expected_game) if connected_game is not None: connector = AsyncMock() connector.game_enum = connected_game else: connector = None backend._interact_with_game = AsyncMock(side_effect=MemoryOperationException("err") if interact_fails else None) backend._identify_game = AsyncMock(return_value=connector) should_call_interact = connected_game is not None if should_call_interact: should_call_interact = (expected_game == connected_game) or (expected_game is None) # Run await backend.update(1) # Assert backend._identify_game.assert_awaited_once_with() if should_call_interact: backend._interact_with_game.assert_awaited_once_with(1) if interact_fails: assert backend._world is None else: assert backend._world is not None else: backend._interact_with_game.assert_not_awaited()
async def test_update(backend: ConnectionBackend, depth: int): # Setup # depth 0: not enabled # depth 1: can't connect # depth 2: call identify game # depth 3: don't call identify game connector = MagicMock() backend._enabled = depth > 0 backend.executor.connect = AsyncMock(return_value=depth > 1) backend._expected_game = None backend._world = True backend._identify_game = AsyncMock(return_value=connector) backend._interact_with_game = AsyncMock() if depth == 3: backend.connector = connector # Run await backend.update(1) # Assert backend.executor.connect.assert_has_calls([call()] if depth > 0 else []) if depth == 2: backend._identify_game.assert_awaited_once_with() assert backend.connector == connector else: backend._identify_game.assert_not_awaited() if depth >= 2: backend._interact_with_game.assert_awaited_once_with(1) else: backend._interact_with_game.assert_not_awaited()