public void CollectsSkipRescueForAction()
        {
            BuildDescriptor();

            var controllerType = typeof(SkipRescueController);

            var metaDesc = provider.BuildDescriptor(controllerType);

            Assert.IsNotNull(metaDesc);
            var actionMethod   = controllerType.GetMethod("Action1");
            var actionMetaDesc = metaDesc.GetAction(actionMethod);

            Assert.IsNotNull(actionMetaDesc);
            Assert.IsNotNull(actionMetaDesc.SkipRescue);
        }
        public void DescriptorIsCreatedForControllerAndAction()
        {
            helperDescProviderMock                = mockRepository.DynamicMock <IHelperDescriptorProvider>();
            filterDescProviderMock                = mockRepository.DynamicMock <IFilterDescriptorProvider>();
            layoutDescProviderMock                = mockRepository.DynamicMock <ILayoutDescriptorProvider>();
            rescueDescProviderMock                = mockRepository.DynamicMock <IRescueDescriptorProvider>();
            resourceProviderMock                  = mockRepository.DynamicMock <IResourceDescriptorProvider>();
            transformDescProviderMock             = mockRepository.DynamicMock <ITransformFilterDescriptorProvider>();
            returnTypeDescProviderMock            = mockRepository.DynamicMock <IReturnBinderDescriptorProvider>();
            dynamicActionProviderDescProviderMock = mockRepository.DynamicMock <IDynamicActionProviderDescriptorProvider>();

            provider = new DefaultControllerDescriptorProvider(helperDescProviderMock,
                                                               filterDescProviderMock,
                                                               layoutDescProviderMock,
                                                               rescueDescProviderMock,
                                                               resourceProviderMock,
                                                               transformDescProviderMock, returnTypeDescProviderMock,
                                                               dynamicActionProviderDescProviderMock);

            var controllerType = typeof(SingleActionController);
            var actionMethod   = controllerType.GetMethod("Action1");

            using (mockRepository.Record())
            {
                // Controller level
                Expect.Call(helperDescProviderMock.CollectHelpers(controllerType)).Return(new HelperDescriptor[0]);
                Expect.Call(resourceProviderMock.CollectResources(controllerType)).Return(new ResourceDescriptor[0]);
                Expect.Call(filterDescProviderMock.CollectFilters(controllerType)).Return(new FilterDescriptor[0]);
                Expect.Call(layoutDescProviderMock.CollectLayout(controllerType)).Return(null);
                Expect.Call(rescueDescProviderMock.CollectRescues(controllerType)).Return(new RescueDescriptor[0]);

                // Action level
                Expect.Call(resourceProviderMock.CollectResources(actionMethod)).Return(new ResourceDescriptor[0]);
                Expect.Call(rescueDescProviderMock.CollectRescues(actionMethod)).Return(new RescueDescriptor[0]);
                Expect.Call(layoutDescProviderMock.CollectLayout(actionMethod)).Return(null);
                Expect.Call(transformDescProviderMock.CollectFilters(actionMethod)).Return(new TransformFilterDescriptor[0]);
                Expect.Call(returnTypeDescProviderMock.Collect(actionMethod)).Return(null);
                Expect.Call(dynamicActionProviderDescProviderMock.CollectProviders(controllerType)).Return(
                    new DynamicActionProviderDescriptor[0]);
            }

            using (mockRepository.Playback())
            {
                var metaDesc = provider.BuildDescriptor(controllerType);
                Assert.IsNotNull(metaDesc);
                var actionMetaDesc = metaDesc.GetAction(actionMethod);
                Assert.IsNotNull(actionMetaDesc);
                Assert.IsNull(actionMetaDesc.AccessibleThrough);
            }
        }