public void OnActionExecuted_SetsCorrectResultMessageIfExceptionHasFilterWithDerivedExceptionType()
        {
            var fakeContext = CreateFakeContext();

            fakeContext.Exception = new ApplicationException();
            var fakeFilter = new ReplyOnExceptionWithAttribute(typeof(Exception), StatusCodes.Status500InternalServerError)
            {
                ReplyMessage = "Any Result Message."
            };

            fakeContext.ActionDescriptor.FilterDescriptors.Add(new FilterDescriptor(fakeFilter, 0));

            testedFilter.OnActionExecuted(fakeContext);

            fakeContext.Result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().Be(fakeFilter.ReplyMessage);
        }
        public void OnActionExecuted_SetsResultMessageOfMoreSpecializedFilterIfSeveralFittingFiltersAreSet()
        {
            var fakeContext = CreateFakeContext();

            fakeContext.Exception = new ApplicationException();
            fakeContext.ActionDescriptor.FilterDescriptors.Add(new FilterDescriptor(new ReplyOnExceptionWithAttribute(typeof(Exception), StatusCodes.Status501NotImplemented), 0));
            var appropriateFilter = new ReplyOnExceptionWithAttribute(typeof(ApplicationException), StatusCodes.Status500InternalServerError)
            {
                ReplyMessage = "Any Result Message"
            };

            fakeContext.ActionDescriptor.FilterDescriptors.Add(new FilterDescriptor(appropriateFilter, 0));

            testedFilter.OnActionExecuted(fakeContext);

            fakeContext.Result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().Be(appropriateFilter.ReplyMessage);
        }