示例#1
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            try
            {
                HttpContextBase httpContext = new HttpContextWrapper(HttpContext.Current);

                var moduleExecutionEngine = GetModuleExecutionEngine();

                _result = moduleExecutionEngine.ExecuteModule(GetModuleRequestContext(httpContext));

                ModuleActions = LoadActions(_result);

                httpContext.SetModuleRequestResult(_result);

                //if (_result != null)
                //{
                //    Controls.Add(new LiteralControl(RenderModule(_result).ToString()));
                //}
            }
            catch (Exception exc)
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
示例#2
0
        private void RenderModule(ModuleRequestResult moduleResult)
        {
            var writer = this.RequestContext.HttpContext.Response.Output;

            var moduleExecutionEngine = ComponentFactory.GetComponent <IModuleExecutionEngine>();

            moduleExecutionEngine.ExecuteModuleResult(moduleResult, writer);
        }
        public void HasModuleRequestResult_Returns_True_If_Present()
        {
            // Arrange
            HttpContextBase httpContext    = MockHelper.CreateMockHttpContext();
            var             expectedResult = new ModuleRequestResult();

            httpContext.Items[HttpContextExtensions.ModuleRequestResultKey] = expectedResult;

            //Act and Assert
            Assert.IsTrue(httpContext.HasModuleRequestResult());
        }
示例#4
0
        private static void SetupMockModuleApplication(ControllerContext context, ViewEngineCollection engines)
        {
            var mockApp = new Mock <ModuleApplication>();

            mockApp.Object.ViewEngines = engines;
            (context.Controller as IDnnController).ViewEngineCollectionEx = engines;

            var activeModuleRequest = new ModuleRequestResult
            {
                ModuleApplication = mockApp.Object
            };

            context.HttpContext.SetModuleRequestResult(activeModuleRequest);
        }
        public void GetModuleRequestResult_Returns_ModuleRequestResult_If_Present()
        {
            //Arrange
            var httpContext    = MockHelper.CreateMockHttpContext();
            var expectedResult = new ModuleRequestResult();

            httpContext.Items[HttpContextExtensions.ModuleRequestResultKey] = expectedResult;

            //Act
            var result = httpContext.GetModuleRequestResult();

            //Assert
            Assert.AreSame(expectedResult, result);
        }
示例#6
0
        private MvcHtmlString RenderModule(ModuleRequestResult moduleResult)
        {
            MvcHtmlString moduleOutput;

            using (var writer = new StringWriter(CultureInfo.CurrentCulture))
            {
                var moduleExecutionEngine = ComponentFactory.GetComponent <IModuleExecutionEngine>();

                moduleExecutionEngine.ExecuteModuleResult(moduleResult, writer);
                moduleOutput = MvcHtmlString.Create(writer.ToString());
            }

            return(moduleOutput);
        }
示例#7
0
        public void ExecuteModule_Returns_Null_If_Application_Is_Null()
        {
            // Arrange
            var engine         = new ModuleExecutionEngine();
            var requestContext = new ModuleRequestContext()
            {
                ModuleApplication = null
            };

            // Act
            ModuleRequestResult result = engine.ExecuteModule(requestContext);

            // Assert
            Assert.IsNull(result);
        }
        public void SetModuleRequestResult_Sets_ModuleRequestResult()
        {
            // Arrange
            HttpContextBase context        = MockHelper.CreateMockHttpContext();
            var             expectedResult = new ModuleRequestResult();

            // Act
            context.SetModuleRequestResult(expectedResult);

            // Assert
            var actual = context.Items[HttpContextExtensions.ModuleRequestResultKey];

            Assert.IsNotNull(actual);
            Assert.IsInstanceOf <ModuleRequestResult>(actual);
        }
示例#9
0
        private ModuleActionCollection LoadActions(ModuleRequestResult result)
        {
            var actions = new ModuleActionCollection();

            if (result.ModuleActions != null)
            {
                foreach (ModuleAction action in result.ModuleActions)
                {
                    action.ID = this.ModuleContext.GetNextActionID();
                    actions.Add(action);
                }
            }

            return(actions);
        }
示例#10
0
        protected void ExecuteModule()
        {
            try
            {
                HttpContextBase httpContext = new HttpContextWrapper(HttpContext.Current);

                var moduleExecutionEngine = this.GetModuleExecutionEngine();

                this._result = moduleExecutionEngine.ExecuteModule(this.GetModuleRequestContext(httpContext));

                this.ModuleActions = this.LoadActions(this._result);

                httpContext.SetModuleRequestResult(this._result);
            }
            catch (Exception exc)
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
        public void ExecuteRequest_ReleasesController_After_Executing()
        {
            // Arrange
            var app = new ModuleApplication();

            var controller = new Mock <IDnnController>();

            var controllerFactory = SetupControllerFactory(controller.Object);

            app.ControllerFactory = controllerFactory.Object;

            ModuleRequestContext moduleRequestContext = CreateModuleContext(ControllerName, ActionName);

            // Act
            ModuleRequestResult result = app.ExecuteRequest(moduleRequestContext);

            // Assert
            controllerFactory.Verify(cf => cf.ReleaseController(controller.Object));
        }
示例#12
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            try
            {
                HttpContextBase httpContext = new HttpContextWrapper(HttpContext.Current);

                var moduleExecutionEngine = GetModuleExecutionEngine();

                _result = moduleExecutionEngine.ExecuteModule(GetModuleRequestContext(httpContext));

                ModuleActions = LoadActions(_result);

                httpContext.SetModuleRequestResult(_result);
            }
            catch (Exception exc)
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }
        }
示例#13
0
        public void ExecuteModule_Returns_Result_Of_Executing_ModuleApplication()
        {
            // Arrange
            var engine   = new ModuleExecutionEngine();
            var expected = new ModuleRequestResult();

            var moduleApp = new Mock <ModuleApplication>();

            moduleApp.Setup(app => app.ExecuteRequest(It.IsAny <ModuleRequestContext>()))
            .Returns(expected);
            var requestContext = new ModuleRequestContext()
            {
                ModuleApplication = moduleApp.Object
            };

            // Act
            ModuleRequestResult actual = engine.ExecuteModule(requestContext);

            // Assert
            Assert.AreSame(expected, actual);
        }
        public void ExecuteModuleResult_Calls_IDnnViewResult_ExecuteResult()
        {
            // Arrange
            var engine = new ModuleExecutionEngine();

            var actionResultMock = new Mock <ActionResult>();

            var viewResultMock = actionResultMock.As <IDnnViewResult>();

            var controllerContext   = MockHelper.CreateMockControllerContext();
            var moduleRequestResult = new ModuleRequestResult
            {
                ActionResult      = actionResultMock.Object,
                ControllerContext = controllerContext,
            };

            // Act
            engine.ExecuteModuleResult(moduleRequestResult, new StringWriter());

            // Arrange
            viewResultMock.Verify(v => v.ExecuteResult(It.IsAny <ControllerContext>(), It.IsAny <TextWriter>()));
        }
示例#15
0
        public void ExecuteRequest_Executes_Constructed_Controller_And_Provides_RequestContext()
        {
            // Arrange
            var app = new ModuleApplication();

            var controller = new Mock <IController>();

            controller.As <IDnnController>();

            var controllerFactory = SetupControllerFactory(controller.Object);

            app.ControllerFactory = controllerFactory.Object;

            ModuleRequestContext moduleRequestContext = CreateModuleContext(ControllerName, ActionName);

            // Act
            ModuleRequestResult result = app.ExecuteRequest(moduleRequestContext);

            // Assert
            controller.Verify(c => c.Execute(It.Is <RequestContext>(rc =>
                                                                    rc.HttpContext == moduleRequestContext.HttpContext &&
                                                                    rc.RouteData.GetRequiredString("controller") == ControllerName)));
        }
        public void ExecuteRequest_Returns_Result_And_ControllerContext_From_Controller()
        {
            // Arrange
            var app = new ModuleApplication();

            ControllerContext controllerContext = MockHelper.CreateMockControllerContext();
            ActionResult      actionResult      = new Mock <ActionResult>().Object;

            var controller = SetupMockController(actionResult, controllerContext);

            var controllerFactory = SetupControllerFactory(controller.Object);

            app.ControllerFactory = controllerFactory.Object;

            ModuleRequestContext moduleRequestContext = CreateModuleContext(ControllerName, ActionName);

            // Act
            ModuleRequestResult result = app.ExecuteRequest(moduleRequestContext);

            // Assert
            Assert.AreSame(actionResult, result.ActionResult);
            Assert.AreSame(controllerContext, result.ControllerContext);
        }
 public static void SetModuleRequestResult(this HttpContextBase context, ModuleRequestResult moduleRequestResult)
 {
     context.Items[ModuleRequestResultKey] = moduleRequestResult;
 }