protected void Application_Start()
        {
            // I'm not using areas... no need to register.
            // AreaRegistration.RegisterAllAreas();

            RegisterRoutes(RouteTable.Routes);

            // create a container just to pull in tenants
            var topContainer = new Container();
            topContainer.Configure(config =>
            {
                config.Scan(scanner =>
                {
                    // scan the tenants folder
                    // (For some reason just passing "Tenants" doesn't seem to work, which it should according to the docs)
                    scanner.AssembliesFromPath(Path.Combine(Server.MapPath("~/"), "Tenants"));

                    // pull in all the tenant types
                    scanner.AddAllTypesOf<IApplicationTenant>();
                });
            });

            // create selectors
            var tenantSelector = new DefaultTenantSelector(topContainer.GetAllInstances<IApplicationTenant>());
            var containerSelector = new TenantContainerResolver(tenantSelector);

            // clear view engines, we don't want anything other than spark
            ViewEngines.Engines.Clear();
            // set view engine
            ViewEngines.Engines.Add(new TenantViewEngine(tenantSelector));

            // set controller factory
            ControllerBuilder.Current.SetControllerFactory(new ContainerControllerFactory(containerSelector));
        }
        public void DefaultTenantSelector_Select_ReturnsTenantWithSpecifiedBasePath()
        {
            var url = "http://wwww.eagleenvision.net";

            var expected = GenerateTenant(url);
            var tenants = new[] { GenerateTenant(),
                                  GenerateTenant("http://www.google.com", "http://www.yahoo.com"),
                                  expected };
            var selector = new DefaultTenantSelector(tenants);
            Assert.Same(expected, selector.Select(FakeRequest(url)));
        }
 public void DefaultTenantSelector_Ctr_SetsControllers()
 {
     var tenants = Enumerable.Empty<IApplicationTenant>();
     var selector = new DefaultTenantSelector(tenants);
     Assert.Same(tenants, selector.Tenants);
 }