public async Task GetThrowingResource_Fails()
        {
            // Arrange
            var throwingResource = new ThrowingResource();

            _dbContext.Add(throwingResource);
            await _dbContext.SaveChangesAsync();

            // Act
            var(body, response) = await Get($"/api/v1/throwingResources/{throwingResource.Id}");

            // Assert
            AssertEqualStatusCode(HttpStatusCode.InternalServerError, response);

            var errorDocument = JsonConvert.DeserializeObject <ErrorDocument>(body);

            Assert.Single(errorDocument.Errors);
            Assert.Equal(HttpStatusCode.InternalServerError, errorDocument.Errors[0].StatusCode);
            Assert.Equal("An unhandled error occurred while processing this request.", errorDocument.Errors[0].Title);
            Assert.Equal("Exception has been thrown by the target of an invocation.", errorDocument.Errors[0].Detail);

            var stackTraceLines =
                ((JArray)errorDocument.Errors[0].Meta.Data["stackTrace"]).Select(token => token.Value <string>());

            Assert.Contains(stackTraceLines, line => line.Contains(
                                "System.InvalidOperationException: The value for the 'FailsOnSerialize' property is currently unavailable."));
        }
        public void Inline_Rollback_ResourceGetsRolledBack()
        {
            var resource = new ThrowingResource(false);

            using (var txM = new ResolveScope <ITransactionManager>(_Container))
                using (var scope = new ResolveScope <MyService>(_Container))
                {
                    scope.Service.VerifyInAmbient(() =>
                    {
                        txM.Service.CurrentTransaction.Value.Inner.EnlistVolatile(resource, EnlistmentOptions.EnlistDuringPrepareRequired);
                        txM.Service.CurrentTransaction.Value.Rollback();
                    });
                }

            Assert.That(resource.WasRolledBack);
        }