public void ContainerControllerFactory_CreateController_ReturnsExpectedTypeFromContainer_GivenContainerAndProperType()
        {
            var container = new Container();
            var controller = new ProperController();
            container.Inject<ProperController>(controller);
            var factory = new TestContainerControllerFactory(new ContainerResolver(container));
            factory.GetControllerTypeDelegate = () => typeof(ProperController);

            Assert.Same(controller, factory.CreateController(null, ""));
        }
        public void ContainerControllerFactory_CreateController_ReturnsControllerWithActionInvoker_WhenActionInvokerIsNotContainerActionInvoker()
        {
            var container = new Container();
            var controller = new ProperController();
            container.Inject<ProperController>(controller);
            var factory = new TestContainerControllerFactory(new ContainerResolver(container));
            factory.GetControllerTypeDelegate = () => typeof(ProperController);

            Assert.IsType<ContainerControllerActionInvoker>((factory.CreateController(null, "") as ProperController).ActionInvoker);
        }
        public void ContainerControllerFactory_CreateController_ReturnsControllerWithActionInvoker_WhenActionInvokerIsNotContainerActionInvoker()
        {
            var container  = new Container();
            var controller = new ProperController();

            container.Inject <ProperController>(controller);
            var factory = new TestContainerControllerFactory(new ContainerResolver(container));

            factory.GetControllerTypeDelegate = () => typeof(ProperController);

            Assert.IsType <ContainerControllerActionInvoker>((factory.CreateController(null, "") as ProperController).ActionInvoker);
        }
        public void ContainerControllerFactory_CreateController_ReturnsExpectedTypeFromContainer_GivenContainerAndProperType()
        {
            var container  = new Container();
            var controller = new ProperController();

            container.Inject <ProperController>(controller);
            var factory = new TestContainerControllerFactory(new ContainerResolver(container));

            factory.GetControllerTypeDelegate = () => typeof(ProperController);

            Assert.Same(controller, factory.CreateController(null, ""));
        }
        public void ContainerControllerFactory_CreateController_DoesntSetActionInvoker_WhenOfCorrectType()
        {
            var container = new Container();
            var containerResolver = new ContainerResolver(container);
            var controller = new ProperController();
            var actionInvoker = new ContainerControllerActionInvoker(containerResolver);

            controller.ActionInvoker = actionInvoker;
            container.Inject<ProperController>(controller);
            var factory = new TestContainerControllerFactory(containerResolver);
            factory.GetControllerTypeDelegate = () => typeof(ProperController);

            Assert.Same(actionInvoker, (factory.CreateController(null, "") as ProperController).ActionInvoker);
        }
        public void ContainerControllerFactory_CreateController_DoesntSetActionInvoker_WhenOfCorrectType()
        {
            var container         = new Container();
            var containerResolver = new ContainerResolver(container);
            var controller        = new ProperController();
            var actionInvoker     = new ContainerControllerActionInvoker(containerResolver);

            controller.ActionInvoker = actionInvoker;
            container.Inject <ProperController>(controller);
            var factory = new TestContainerControllerFactory(containerResolver);

            factory.GetControllerTypeDelegate = () => typeof(ProperController);

            Assert.Same(actionInvoker, (factory.CreateController(null, "") as ProperController).ActionInvoker);
        }