public async Task GivenRequestFailsWithAnyOtherReason_WhenExecuting_ThenTransactionFailedExceptionShouldBeThrown() { var expectedOperationOutcome = new OperationOutcome(); SetupPostException(HttpStatusCode.NotFound, expectedOperationOutcome); TransactionFailedException exception = await Assert.ThrowsAsync <TransactionFailedException>( () => _fhirTransactionExecutor.ExecuteTransactionAsync(new Bundle(), default)); Assert.Same(expectedOperationOutcome, exception.OperationOutcome); }
public async Task <AppResponse> Handle(TCommand request, CancellationToken cancellationToken) { return(await Task.Factory.StartNew(() => { Exception = new TransactionFailedException(); var fromErrorCode = From.DecreaseBalance(request.Amount, request.TransactionId); CheckDecreaseBalanceResult(fromErrorCode, request); var toErrorCode = To.IncreaseBalance(request.Amount, request.TransactionId); CheckIncreaseBalanceResult(toErrorCode, request); return AppResponse.Success(null); })); }
public void GivenAnEmptyListOfOperationOutComeIssues_WhenInitialized_ThenOneOperationOutcomeIssueShouldBeAdded() { string message = "message"; HttpStatusCode statusCode = HttpStatusCode.Processing; var exception = new TransactionFailedException(message, statusCode, new List <OperationOutcomeIssue>()); Assert.NotNull(exception.Issues); Assert.Single(exception.Issues); AssertOperationOutcomeIssue(message, OperationOutcomeConstants.IssueType.Processing, exception.Issues.First()); }
public void GivenAListOfOperationOutComeIssues_WhenInitialized_ThenCorrectOperationOutcomeIssuesShouldBeAdded() { string message = "message"; HttpStatusCode statusCode = HttpStatusCode.Processing; var operationOutComeIssues = GetOperationOutcomeIssues(message); var exception = new TransactionFailedException(message, statusCode, operationOutComeIssues); Assert.NotNull(exception.Issues); Assert.Equal(3, exception.Issues.Count); AssertOperationOutcomeIssue(message, OperationOutcomeConstants.IssueType.Processing, exception.Issues.First()); AssertOperationOutcomeIssue(message, OperationOutcomeConstants.IssueType.NotFound, exception.Issues.Skip(1).First()); AssertOperationOutcomeIssue(message, OperationOutcomeConstants.IssueType.Invalid, exception.Issues.Last()); }