public async Task Does_not_rollback_on_message_delivery_error() { // Arrange var messageBroker = _testContext.Factory.Services.GetRequiredService <MessageBroker>(); messageBroker.SimulateFailure = true; DomainUser existingUser = _fakers.DomainUser.Generate(); await _testContext.RunOnDatabaseAsync(async dbContext => { await dbContext.ClearTableAsync <DomainUser>(); dbContext.Users.Add(existingUser); await dbContext.SaveChangesAsync(); }); string route = "/domainUsers/" + existingUser.StringId; // Act (HttpResponseMessage httpResponse, ErrorDocument responseDocument) = await _testContext.ExecuteDeleteAsync <ErrorDocument>(route); // Assert httpResponse.Should().HaveStatusCode(HttpStatusCode.ServiceUnavailable); responseDocument.Errors.Should().HaveCount(1); Error error = responseDocument.Errors[0]; error.StatusCode.Should().Be(HttpStatusCode.ServiceUnavailable); error.Title.Should().Be("Message delivery failed."); error.Detail.Should().BeNull(); await _testContext.RunOnDatabaseAsync(async dbContext => { DomainUser user = await dbContext.Users.FirstWithIdOrDefaultAsync(existingUser.Id); user.Should().BeNull(); }); }