public async Task Should_return_ExceptionNotHandledResult()
                        {
                            // Arrange
                            var sut = new ExceptionHandlingManager(_handlers);

                            // Act
                            var result = await sut.HandleAsync(HttpContext);

                            // Assert
                            Assert.IsType <ExceptionNotHandledResult>(result);
                        }
                    public async Task Should_return_NoExceptionResult()
                    {
                        // Arrange
                        _exceptionHandlerFeatureMock
                        .Setup(x => x.Error)
                        .Returns(default(Exception));
                        var sut = new ExceptionHandlingManager(_handlers);

                        // Act
                        var result = await sut.HandleAsync(HttpContext);

                        // Assert
                        Assert.IsType <NoExceptionResult>(result);
                    }
                public async Task Should_return_ExceptionHandlerFeatureNotSupportedResult()
                {
                    // Arrange
                    var sut = new ExceptionHandlingManager(_handlers);

                    _httpContextHelper.FeaturesMock
                    .Setup(x => x.Get <IExceptionHandlerFeature>())
                    .Returns(default(IExceptionHandlerFeature));

                    // Act
                    var result = await sut.HandleAsync(HttpContext);

                    // Assert
                    Assert.IsType <ExceptionHandlerFeatureNotSupportedResult>(result);
                }
            public void Should_order_handlers(
                string errorMessage,
                IEnumerable <OrderableTestExceptionHandler> input,
                Action <IReadOnlyCollection <IExceptionHandler> > assert
                )
            {
                var sut             = new ExceptionHandlingManager(input);
                var orderedHandlers = sut.Handlers;

                try
                {
                    assert(orderedHandlers);
                }
                catch (XunitException ex)
                {
                    throw new DescriptiveException(errorMessage, ex);
                }
            }
                        public async Task Should_return_ExceptionHandlingContext_Result()
                        {
                            // Arrange
                            var handlerMock = new Mock <IExceptionHandler>();

                            handlerMock
                            .Setup(x => x.KnowHowToHandleAsync(_exception))
                            .ReturnsAsync(true);
                            handlerMock
                            .Setup(x => x.ExecuteAsync(It.IsAny <ExceptionHandlingContext>()))
                            .Callback((ExceptionHandlingContext context) => context.Result = new TestResult())
                            .Returns(Task.CompletedTask);
                            _handlers.Add(handlerMock.Object);
                            var sut = new ExceptionHandlingManager(_handlers);

                            // Act
                            var result = await sut.HandleAsync(HttpContext);

                            // Assert
                            Assert.IsType <TestResult>(result);
                        }