public void It_should_retrieve_the_controller_type_by_falling_back_on_the_application_namespaces_implicitely() { // Arrange var mvcApplicationName = Guid.NewGuid().ToString(); var mvcApplication = MvcApplicationBuilder.Build(mvcApplicationName); var controllerType = mvcApplication.DefineControllerType(string.Format("{0}.Controllers", mvcApplicationName), "HomeController"); mvcApplication.DefineControllerType(string.Format("{0}.Controllers", mvcApplicationName), "AccountsController"); var buildManagerMock = new Mock<IBuildManager>(); var buildManager = BuildManagerBuilder.Build(buildManagerMock.Object); buildManagerMock.Setup(bm => bm.GetReferencedAssemblies()).Returns(new[] { mvcApplication.GetAssemby() }); var controllerFactory = new NoMvcTinyControllerFactory(new NoMvcControllerNameUnderscoreResolver()); controllerFactory.SetBuildManager(buildManager); controllerFactory.SetControllerTypeCache(); var requestContext = new RequestContext(new Mock<HttpContextBase>().Object, new RouteData()); requestContext.RouteData.DataTokens.Add("Namespaces", new[] { mvcApplicationName + "2" }); requestContext.RouteData.Values.Add("Action", "Index"); ControllerBuilder.Current.SetControllerFactory(controllerFactory); ControllerBuilder.Current.DefaultNamespaces.Clear(); ControllerBuilder.Current.DefaultNamespaces.Add(mvcApplicationName); // Act var controller = controllerFactory.CreateController(requestContext, "Home"); // Assert Assert.IsAssignableFrom(controllerType, controller); }
public void It_should_not_retrieve_the_controller_type() { // Arrange var mvcApplicationName = Guid.NewGuid().ToString(); var mvcApplication = MvcApplicationBuilder.Build(mvcApplicationName); mvcApplication.DefineControllerType(string.Format("{0}.Controllers", mvcApplicationName), "HomeController"); mvcApplication.DefineControllerType(string.Format("{0}.Controllers", mvcApplicationName), "AccountsController"); var buildManagerMock = new Mock<IBuildManager>(); var buildManager = BuildManagerBuilder.Build(buildManagerMock.Object); buildManagerMock.Setup(bm => bm.GetReferencedAssemblies()).Returns(new[] { mvcApplication.GetAssemby() }); var controllerFactory = new NoMvcTinyControllerFactory(new NoMvcControllerNameUnderscoreResolver()); controllerFactory.SetBuildManager(buildManager); controllerFactory.SetControllerTypeCache(); var requestContext = new RequestContext(new Mock<HttpContextBase>().Object, new RouteData()); requestContext.RouteData.DataTokens.Add("Namespaces", new[] { mvcApplicationName + "2" }); requestContext.RouteData.DataTokens.Add("UseNamespaceFallback", false); requestContext.RouteData.Values.Add("Action", "Index"); ControllerBuilder.Current.SetControllerFactory(controllerFactory); ControllerBuilder.Current.DefaultNamespaces.Clear(); ControllerBuilder.Current.DefaultNamespaces.Add(mvcApplicationName); try { // Act controllerFactory.CreateController(requestContext, "Home"); // Assert Assert.True(false, "Expected exception was not thrown"); } catch (NullReferenceException) { // Assert Assert.True(true, "Expected exception was thrown"); } catch (Exception) { // Assert Assert.True(false, "Expected exception was not thrown"); } }