def test_game_session_collect_pickup_other(flask_app, two_player_session, echoes_resource_database, locations_to_collect, exists, mock_emit_session_update, mocker): mock_emit: MagicMock = mocker.patch("flask_socketio.emit", autospec=True) mock_get_pickup_target: MagicMock = mocker.patch("randovania.server.game_session._get_pickup_target", autospec=True) mock_session_description: PropertyMock = mocker.patch("randovania.server.database.GameSession.layout_description", new_callable=PropertyMock) sio = MagicMock() sio.get_current_user.return_value = database.User.get_by_id(1234) mock_get_pickup_target.return_value = PickupTarget(MagicMock(), 1) for existing_id in exists: database.GameSessionTeamAction.create(session=two_player_session, provider_row=0, provider_location_index=existing_id, receiver_row=0) # Run with flask_app.test_request_context(): result = game_session.game_session_collect_locations(sio, 1, locations_to_collect) # Assert assert result is None mock_get_pickup_target.assert_has_calls([ call(mock_session_description.return_value, 0, location) for location in locations_to_collect ]) for location in locations_to_collect: database.GameSessionTeamAction.get(session=two_player_session, provider_row=0, provider_location_index=location) if exists == locations_to_collect: mock_emit.assert_not_called() mock_emit_session_update.assert_not_called() else: mock_emit.assert_called_once_with("game_has_update", {"session": 1, "row": 1, }, room=f"game-session-1-1235") mock_emit_session_update.assert_called_once_with(database.GameSession.get(id=1))
def test_game_session_collect_pickup_for_self( mock_session_description: PropertyMock, mock_get_resource_database: MagicMock, mock_get_pickup_target: MagicMock, mock_emit: MagicMock, flask_app, two_player_session, echoes_resource_database): sio = MagicMock() sio.get_current_user.return_value = database.User.get_by_id(1234) pickup = PickupEntry( "A", 1, ItemCategory.TEMPLE_KEY, ItemCategory.KEY, (ConditionalResources(None, None, ((echoes_resource_database.item[0], 1), )), )) mock_get_resource_database.return_value = echoes_resource_database mock_get_pickup_target.return_value = PickupTarget(pickup, 0) # Run with flask_app.test_request_context(): result = game_session.game_session_collect_locations(sio, 1, (0, )) # Assert assert result is None mock_emit.assert_not_called() mock_get_pickup_target.assert_called_once_with( mock_session_description.return_value, 0, 0) with pytest.raises(peewee.DoesNotExist): database.GameSessionTeamAction.get(session=two_player_session, provider_row=0, provider_location_index=0)
def test_game_session_collect_pickup_etm(mock_session_description: PropertyMock, mock_get_pickup_target: MagicMock, mock_emit: MagicMock, flask_app, two_player_session, echoes_resource_database): sio = MagicMock() sio.get_current_user.return_value = database.User.get_by_id(1234) mock_get_pickup_target.return_value = None # Run with flask_app.test_request_context(): result = game_session.game_session_collect_locations(sio, 1, (0,)) # Assert assert result is None mock_emit.assert_not_called() mock_get_pickup_target.assert_called_once_with(mock_session_description.return_value, 0, 0) with pytest.raises(peewee.DoesNotExist): database.GameSessionTeamAction.get(session=two_player_session, provider_row=0, provider_location_index=0)