public void SetUp()
        {
            var registry = new FubuRegistry();
            registry.Actions.IncludeType<JsonController>();

            theGraph = registry.BuildGraph();
        }
        public void SetUp()
        {
            registry = new FubuRegistry(x =>
            {

                // Tell FubuMVC to enrich the behavior chain for each
                // RouteHandler with the "FakeUnitOfWorkBehavior"
                // Kind of like a global [ActionFilter] in MVC
                x.Policies.EnrichCallsWith<FakeUnitOfWorkBehavior>(
                    call => call.Method.Name == "SomeAction");

                // Explicit junk you would only do for exception cases to
                // override the conventions
                x.Route<InputModel>("area/sub/{Name}/{Age}")
                    .Calls<TestController>(c => c.SomeAction(null)).OutputToJson();

                x.Route<InputModel>("area/sub2/{Name}/{Age}")
                    .Calls<TestController>(c => c.AnotherAction(null)).OutputToJson();

                x.Route<InputModel>("area/sub3/{Name}/{Age}")
                    .Calls<TestController>(c => c.ThirdAction(null)).OutputToJson();
            });

            _graph = registry.BuildGraph();
        }
        public void configures_settings_with_default_assemblies_and_namespaces()
        {
            var registry = new FubuRegistry();
            registry.WithSparkDefaults();

            SparkSettings settings = null;
            registry.Services(x =>
                              	{
                              		settings = (SparkSettings) x.DefaultServiceFor<ISparkSettings>().Value;
                              	});

            registry.BuildGraph();

            settings
                .UseAssemblies
                .ShouldContain(typeof(HtmlTag).Assembly.FullName);

            settings
                .UseAssemblies
                .ShouldContain(typeof(FubuPageExtensions).Assembly.FullName);

            settings
                .UseNamespaces
                .ShouldContain(typeof(FubuRegistryExtensions).Namespace);

            settings
                .UseNamespaces
                .ShouldContain(typeof(FubuPageExtensions).Namespace);

            settings
                .UseNamespaces
                .ShouldContain(typeof(HtmlTag).Namespace);
        }
        public void apply_the_simplistic_asset_combination_approach()
        {
            var registry = new FubuRegistry();
            registry.Assets.CombineAllUniqueAssetRequests();

            registry.BuildGraph().Services.DefaultServiceFor<ICombinationDeterminationService>()
                .Type.ShouldEqual(typeof(CombineAllUniqueSetsCombinationDeterminationService));
        }
        public void register_a_custom_missing_asset_handler()
        {
            var registry = new FubuRegistry();
            registry.Assets.HandleMissingAssetsWith<MyDifferentMissingAssetHandler>();

            registry.BuildGraph().Services.DefaultServiceFor<IMissingAssetHandler>()
                .Type.ShouldEqual(typeof(MyDifferentMissingAssetHandler));
        }
        public void YSOD_false()
        {
            var registry = new FubuRegistry();
            registry.Assets.YSOD_on_missing_assets(false);

            registry.BuildGraph().Services.DefaultServiceFor<IMissingAssetHandler>()
                .Type.ShouldEqual(typeof (TraceOnlyMissingAssetHandler));
        }
 private BehaviorGraph setupActions()
 {
     var registry = new FubuRegistry();
     registry.Route("a/m1").Calls<Action1>(a => a.M1());
     registry.Route("a/m2").Calls<Action1>(a => a.M2());
     registry.Route("b/m1").Calls<Action2>(b => b.M1());
     registry.Route("b/m2").Calls<Action2>(b => b.M2());
     return registry.BuildGraph();
 }
        public void wraps_handled_actions_with_exception_wrapper()
        {
            var registry = new FubuRegistry(r => r.ApplyConvention<APIExceptionConvention<Error500Request>>());
            registry.Actions.IncludeType<Action>();

            var graph = registry.BuildGraph();

            graph.BehaviorFor<Action>(x => x.ApiMethod(null)).IsWrappedBy(typeof(ActionExceptionWrapper<Error500Request>)).ShouldBeTrue();
        }
        public void uses_the_resource_path_to_do_its_job()
        {
            var registry = new FubuRegistry();
            registry.Actions.IncludeType<Controller1>();

            registry.BuildGraph().BehaviorFor<Controller1>(x => x.get_resource(null)).Route.CreateUrlFromInput(
                new ResourcePath("something/else"))
                .ShouldEqual("resource/something/else");
        }
        public void integrated_with_fubu_registry()
        {
            var registry = new FubuRegistry();
            registry.Actions.IncludeType<PartialController>();

            var graph = registry.BuildGraph();

            graph.BehaviorFor<PartialController>(x => x.Go(null)).IsPartialOnly.ShouldBeFalse();
            graph.BehaviorFor<PartialController>(x => x.GoPartial(null)).IsPartialOnly.ShouldBeTrue();
        }
        public void register_a_combination_policy_with_CombineWith()
        {
            var registry = new FubuRegistry();
            registry.Assets
                .CombineWith<CombineAllScriptFiles>()
                .CombineWith<CombineAllStylesheets>();

            registry.BuildGraph().Services.ServicesFor(typeof(ICombinationPolicy))
                .Select(x => x.Type).ShouldHaveTheSameElementsAs(typeof(CombineAllScriptFiles), typeof(CombineAllStylesheets));
        }
        public void should_put_an_anti_forgery_token_on_the_chain()
        {
            var registry = new FubuRegistry();
            registry.Actions.IncludeType<Controller1>();

            registry.BuildGraph().BehaviorFor<Controller1>(x => x.MethodWithAF(null))
                .FirstCall()
                .Previous.ShouldBeOfType<AntiForgeryNode>()
                .Salt.ShouldEqual("abc");
        }
        public void should_only_apply_behavior_once()
        {
            var hostRegistry = new FubuRegistry();
            var packageRegistry = new FubuPackageRegistry();
            packageRegistry.Actions.IncludeType<Controller1>();
            hostRegistry.Import(packageRegistry, string.Empty);
            theGraph = hostRegistry.BuildGraph();

            var chain = chainFor(x => x.BasicContinuation(null))
                .Output.Writers.OfType<Writer>().ShouldHaveCount(1);
        }
        public void SetUp()
        {
            var registry = new FubuRegistry();
            registry.Import<DiagnosticsRegistration>();

            graph = registry.BuildGraph();
            urls = MockRepository.GenerateMock<IUrlRegistry>();

            graph.Behaviors.Any().ShouldBeTrue();
            graph.Actions().Each(x => Debug.WriteLine(x.Description));
        }
 public void should_ignore_types_with_null_namespace()
 {
     var registry = new FubuRegistry(x =>
                                         {
                                             x.Applies.ToThisAssembly();
                                             x.Actions.IncludeType<ControllerWithoutANamespace>();
                                             x.Import<DiagnosticsRegistration>();
                                         });
     // basically just make sure nothing blows up
     registry
         .BuildGraph();
 }
        public void SetUp()
        {
            var registry = new FubuRegistry(x =>
            {
                x.Actions.IncludeType<SitesController>();
                x.Actions.IncludeType<CasesController>();

                x.ApplyConvention<EnsureEntityExistsConvention>();
            });

            theGraph = registry.BuildGraph();
        }
        public void SetUp()
        {
            var registry = new FubuRegistry(x =>
            {
                x.Actions.IncludeType<Controller1>();
                x.Actions.IncludeType<Controller2>();

                x.Media.ApplyContentNegotiationToActions(call => call.OutputType() == typeof (ViewModel3));
            });

            theGraph = registry.BuildGraph();
        }
        public void applies_conneg()
        {
            var registry = new FubuRegistry();
            registry.Actions.IncludeType<SomeController>();

            var chain = registry.BuildGraph().BehaviorFor<SomeController>(x => x.Go(null));

            chain.Output.UsesFormatter<JsonFormatter>();
            chain.Output.UsesFormatter<XmlFormatter>();

            chain.Input.AllowHttpFormPosts.ShouldBeTrue();
            chain.Input.UsesFormatter<JsonFormatter>();
            chain.Input.UsesFormatter<XmlFormatter>();
        }
        public void navigation_method_on_fubu_registry_works()
        {
            var registry = new FubuRegistry();
            registry.Navigation(x =>
            {
                x.ForMenu(FakeKeys.Key1);
                x.Add += MenuNode.Node(FakeKeys.Key2);
                x.Add += MenuNode.Node(FakeKeys.Key3);
            });

            var graph = registry.BuildGraph().Navigation;

            graph.MenuFor(FakeKeys.Key1).Select(x => x.Key)
                .ShouldHaveTheSameElementsAs(FakeKeys.Key2, FakeKeys.Key3);
        }
        public void should_append_the_url_suffix_onto_each_appropriate_route()
        {
            var registry = new FubuRegistry();
            registry.Actions.IncludeType<Controller1>();

            var graph = registry.BuildGraph();

            graph.BehaviorFor<Controller1>(x => x.get_resource(null))
                .Route.Pattern.ShouldEqual(
                    "resource/{Part0}/{Part1}/{Part2}/{Part3}/{Part4}/{Part5}/{Part6}/{Part7}/{Part8}/{Part9}");

            graph.BehaviorFor<Controller1>(x => x.get_special(null))
                .Route.Pattern.ShouldEqual(
                    "special/{Part0}/{Part1}/{Part2}/{Part3}/{Part4}/{Part5}/{Part6}/{Part7}/{Part8}/{Part9}");
        }
        public void registers_spark_view_factory()
        {
            var registry = new FubuRegistry();
            registry.WithSparkDefaults();

            ISparkViewFactory factory = null;
            registry.Services(x =>
                              	{
                                    factory = (ISparkViewFactory)x.DefaultServiceFor<ISparkViewFactory>().Value;
                              	});

            registry.BuildGraph();

            factory.ShouldNotBeNull();
        }
        public void smoke_test_the_with_types()
        {
            var registry = new FubuRegistry();
            registry.Applies.ToThisAssembly();
            registry.WithTypes(types =>
            {
                types.TypesMatching(x => x.IsConcreteTypeOf<MyInterface>()).Each(type =>
                {
                    registry.Services(s => s.AddService(typeof(MyInterface), new ObjectDef(type)));
                });
            });

            registry.BuildGraph().Services.ServicesFor<MyInterface>()
                .Single().Type.ShouldEqual(typeof (MyConcreteClass));
        }
        public void override_the_storage_mechanism()
        {
            var registry = new FubuRegistry();
            registry.Import<BasicLocalizationSupport>(x =>
            {
                x.LocalizationStorageIs<InMemoryLocalizationStorage>();
            });
            var graph = registry.BuildGraph();

            var list = graph.Services.ServicesFor<IActivator>().Select(x => x.Type).ToList();

            list.ShouldNotContain(typeof(RegisterXmlDirectoryLocalizationStorage));
            list.ShouldContain(typeof(SpinUpLocalizationCaches));

            graph.Services.DefaultServiceFor<ILocalizationStorage>().Type.ShouldEqual(
                typeof (InMemoryLocalizationStorage));
        }
        public void SetUp()
        {
            var registry = new FubuRegistry(x =>
            {
                x.Actions.IncludeTypesNamed(t => t.EndsWith("Controller"));

                x.Configure(g =>
                {
                    g.BehaviorFor<AuthorizedController>(c => c.Go()).Authorization.AddRole("RoleA");
                });
            });

            graph = registry.BuildGraph();

            goChain = graph.BehaviorFor<AuthorizedController>(x => x.Go());
            moveChain = graph.BehaviorFor<AuthorizedController>(x => x.Move());
        }
        public void first_configuration_supercedes_second()
        {
            var registry = new FubuRegistry();
            registry.Spark(spark => spark.Settings.AddNamespace("Test"));
            registry.WithSparkDefaults();

            SparkSettings settings = null;
            registry.Services(x =>
                              	{
                              		settings = (SparkSettings) x.DefaultServiceFor<ISparkSettings>().Value;
                              	});

            registry.BuildGraph();

            settings
                .UseNamespaces
                .ShouldContain("Test");
        }
        public void import_navigation_from_child_registry()
        {
            var registry = new FubuRegistry();
            registry.Navigation(x =>
            {
                x.ForMenu(FakeKeys.Key1);
                x.Add += MenuNode.Node(FakeKeys.Key2);
                x.Add += MenuNode.Node(FakeKeys.Key3);
            });

            registry.Import<ChildRegistry>();

            var graph = registry.BuildGraph().Navigation;

            graph.MenuFor(FakeKeys.Key1).Select(x => x.Key)
                .ShouldHaveTheSameElementsAs(FakeKeys.Key2, FakeKeys.Key3, FakeKeys.Key4, FakeKeys.Key5);

            graph.MenuFor(FakeKeys.Key6).Select(x => x.Key)
                .ShouldHaveTheSameElementsAs(FakeKeys.Key7, FakeKeys.Key8);
        }
        public void BeforeEach()
        {
            _parent = new FubuRegistry();
            _parent.IncludeDiagnostics(true);

            _import = new FubuRegistry();
            _import.IncludeDiagnostics(true);
            _import.Actions
                .IncludeType<Handler1>()
                .IncludeType<Handler2>();

            _import.Configure(x =>
            {
                _importObserver = x.Observer;
                _importActions = x.Actions()
                    .Where(a => a.HandlerType.Namespace == GetType().Namespace);
            });

            _parent.Import(_import, "import");
            _parentObserver = _parent.BuildGraph().Observer;
        }
        public void SetUp()
        {
            var registry = new FubuRegistry();
            registry.Configure(graph =>
            {
                chain1 = new BehaviorChain();
                chain1.AddToEnd(Wrapper.For<SimpleBehavior>());
                chain1.AddToEnd(Wrapper.For<DifferentBehavior>());
                chain1.Route = new RouteDefinition("something");
                graph.AddChain(chain1);

                chain2 = new BehaviorChain();
                chain2.IsPartialOnly = true;
                chain2.AddToEnd(Wrapper.For<SimpleBehavior>());
                chain2.AddToEnd(Wrapper.For<DifferentBehavior>());
                graph.AddChain(chain2);

            });

            registry.Policies.Add<ApplyTracing>();

            registry.BuildGraph();
        }
Exemple #29
0
        public void Bootstrap(ICollection <RouteBase> routes)
        {
            if (HttpContext.Current != null)
            {
                UrlContext.Live();
            }



            // Find all of the IFubuRegistryExtension's and apply
            // them to the top level FubuRegistry *BEFORE*
            // registering the Fubu application parts into
            // your IoC container
            FindAllExtensions().Each(x => x.Configure(_topRegistry));

            // "Bake" the fubu configuration model into your
            // IoC container for the application
            var graph = _topRegistry.BuildGraph();

            graph.EachService(_facility.Register);
            var factory = _facility.BuildFactory();

            // Register all the Route objects into the routes
            // collection

            // TODO -- need a way to do this with debugging
            graph.VisitRoutes(x =>
            {
                x.Actions += (routeDef, chain) =>
                {
                    var route          = routeDef.ToRoute();
                    route.RouteHandler = new FubuRouteHandler(factory, chain.UniqueId);

                    routes.Add(route);
                };
            });
        }
        public void SetUp()
        {
            var registry = new FubuRegistry(x =>
            {
                x.Applies.ToThisAssembly();
                x.Actions.IncludeClassesSuffixedWithController();
            });

            theGraph = registry.BuildGraph();
        }
        public void SetUp()
        {
            var registry = new FubuRegistry();
            registry.Actions.IncludeType<OrderingPolicyController>();

            registry.Policies.WrapBehaviorChainsWith<OPWrapper1>().Ordering(x =>
            {
                x.MustBeBeforeAuthorization();
            });

            graph = registry.BuildGraph();
        }