public async Task WaitForGameLaunchEndedAndRecordTestAsync(EndReason?reason, bool throws) { _target = GetGameLaunch(false); var action = Substitute.For <IAction>(); DeveloperLogEvent devEvent = SetupUpdateEvent(action); action.RecordAsync(Arg.Any <Task>()).Returns(callInfo => callInfo.Arg <Task>()); _actionRecorder.CreateToolAction(ActionType.GameLaunchWaitForEnd).Returns(action); var endResult = new DeleteLaunchResult( GetGameLaunch(GameLaunchState.GameLaunchEnded, reason), true); _gameLaunchBeHelper .WaitUntilGameLaunchEndedAsync(_launchName, Arg.Any <ICancelable>(), action) .Returns(Task.FromResult(endResult)); if (throws) { Assert.ThrowsAsync <GameLaunchFailError>( async() => await _target.WaitForGameLaunchEndedAndRecordAsync()); } else { await _target.WaitForGameLaunchEndedAndRecordAsync(); } Assert.That(devEvent.GameLaunchData.LaunchId, Is.EqualTo(_launchId)); Assert.That(devEvent.GameLaunchData.EndReason, Is.EqualTo((int?)reason)); await action.Received(1).RecordAsync(Arg.Any <Task>()); }
public async Task DeleteLaunchNoLaunchAsync() { _gameletClient.DeleteGameLaunchAsync(_gameLaunchName, _action).Throws( new CloudException( "error", new RpcException(new Status(StatusCode.NotFound, "not found")))); DeleteLaunchResult result = await _target.DeleteLaunchAsync(_gameLaunchName, _cancelable, _action); Assert.That(result.IsSuccessful, Is.EqualTo(true)); Assert.That(result.DeletedLaunch, Is.Null); await AssertActionNotRecordedAsync(); }
public async Task DeleteLaunchSuccessAsync() { _gameletClient.DeleteGameLaunchAsync(_gameLaunchName, _action).Returns( GetLaunch(_gameLaunchName, GameLaunchState.RunningGame)); GgpGrpc.Models.GameLaunch lastLaunch = GetLaunch(_gameLaunchName, GameLaunchState.GameLaunchEnded, EndReason.GameExitedWithSuccessfulCode); _gameletClient.GetGameLaunchStateAsync(_gameLaunchName, _action).Returns( GetLaunch(_gameLaunchName, GameLaunchState.RunningGame), GetLaunch(_gameLaunchName, GameLaunchState.RunningGame), lastLaunch); DeleteLaunchResult result = await _target.DeleteLaunchAsync(_gameLaunchName, _cancelable, _action); Assert.That(result.IsSuccessful, Is.EqualTo(true)); Assert.That(result.DeletedLaunch, Is.EqualTo(lastLaunch)); await AssertActionNotRecordedAsync(); }
public async Task WaitUntilGameLaunchEndedAsync(GameLaunchState[] launchStates, int[] stateRepeat, bool isSuccessful) { List <GameLaunchState> statusSequence = launchStates .Select((state, i) => Enumerable.Repeat(state, stateRepeat[i])) .SelectMany(states => states).ToList(); Task <GgpGrpc.Models.GameLaunch>[] launches = statusSequence .Select((state, i) => Task.FromResult(GetLaunch(_gameLaunchName, state))).ToArray(); _gameletClient.GetGameLaunchStateAsync(_gameLaunchName, _action) .Returns(launches[0], launches.Skip(1).ToArray()); DeleteLaunchResult result = await _target.WaitUntilGameLaunchEndedAsync(_gameLaunchName, _cancelable, _action); Assert.That(result.IsSuccessful, Is.EqualTo(isSuccessful)); Assert.That(result.DeletedLaunch.Name, Is.EqualTo(_gameLaunchName)); await AssertActionNotRecordedAsync(); }