private void BuildDescriptor()
 {
     provider = new DefaultControllerDescriptorProvider(new DefaultHelperDescriptorProvider(),
                                                        new DefaultFilterDescriptorProvider(), new DefaultLayoutDescriptorProvider(),
                                                        new DefaultRescueDescriptorProvider(), new DefaultResourceDescriptorProvider(),
                                                        new DefaultTransformFilterDescriptorProvider(), new DefaultReturnBinderDescriptorProvider(),
                                                        new DefaultDynamicActionProviderDescriptorProvider());
 }
        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);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="StubMonoRailServices"/> class.
        /// </summary>
        /// <param name="urlBuilder">The URL builder.</param>
        /// <param name="filterFactory">The filter factory.</param>
        /// <param name="viewEngineManager">The view engine manager.</param>
        /// <param name="actionSelector">The action selector.</param>
        /// <param name="dynamicActionProviderFactory">The dynamic action provider factory.</param>
        public StubMonoRailServices(IUrlBuilder urlBuilder, IFilterFactory filterFactory, IViewEngineManager viewEngineManager,
                                    IActionSelector actionSelector, IDynamicActionProviderFactory dynamicActionProviderFactory)
        {
            this.UrlBuilder                   = urlBuilder;
            this.FilterFactory                = filterFactory;
            this.ViewEngineManager            = viewEngineManager;
            this.ActionSelector               = actionSelector;
            this.DynamicActionProviderFactory = dynamicActionProviderFactory;
            controllerTree         = new DefaultControllerTree();
            ControllerFactory      = new DefaultControllerFactory(controllerTree);
            StaticResourceRegistry = new DefaultStaticResourceRegistry();

            ControllerContextFactory = new DefaultControllerContextFactory();

            ControllerDescriptorProvider = new DefaultControllerDescriptorProvider(
                new DefaultHelperDescriptorProvider(),
                new DefaultFilterDescriptorProvider(),
                new DefaultLayoutDescriptorProvider(),
                new DefaultRescueDescriptorProvider(),
                new DefaultResourceDescriptorProvider(),
                new DefaultTransformFilterDescriptorProvider(),
                new DefaultReturnBinderDescriptorProvider(),
                new DefaultDynamicActionProviderDescriptorProvider());

            ResourceFactory    = new DefaultResourceFactory();
            ScaffoldingSupport = new StubScaffoldingSupport();
            CacheProvider      = new StubCacheProvider();
            HelperFactory      = new DefaultHelperFactory();
            ServiceInitializer = new DefaultServiceInitializer();

            ExtensionManager = new ExtensionManager(this);

            ValidatorRegistry = new CachedValidationRegistry();

            JSONSerializer = new NewtonsoftJSONSerializer();

            DictionaryAdapterFactory = new DictionaryAdapterFactory();

            ScriptBuilder = new DefaultScriptBuilder();
        }