Exemplo n.º 1
0
 protected override void OnInit(EventArgs e)
 {
     foreach (string controlName in _controls)
     {
         var skin = HostInfo.GetAggregateSkin();
         var skinControlLoader = new SkinControlLoader(this, skin);
         Control control = skinControlLoader.LoadControl(controlName);
         CenterBodyControl.Controls.Add(control);
     }
     base.OnInit(e);
 }
        public void LoadControl_WithControlName_ReplacesDotWithUnderscoreInId()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var loadedControl = new UserControl {ID = "Foo.Bar"};
            containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Returns(loadedControl);
            var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" };
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost");

            // assert
            Assert.AreEqual("Foo_Bar", control.ID);
        }
        public void LoadControl_WithControlName_LoadsTheControlFromTheSkinFolder()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var loadedControl = new UserControl { ID = "Foo.Bar" };
            containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Returns(loadedControl);
            var skin = new SkinConfig {TemplateFolder = "OfMyChinnyChinChin"};
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost");

            // assert
            Assert.AreSame(loadedControl, control);
        }
        public void LoadControl_WithControlThrowingHttpException_LoadsFallbackControl()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var fallbackControl = new UserControl { ID = "Foo.Bar" };
            containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Throws(new HttpException());
            containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/ViewPost.ascx")).Returns(fallbackControl);
            var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" };
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost");

            // assert
            Assert.AreSame(fallbackControl, control);
        }
        public void LoadControl_WithControlAndFallbackThrowingHttpException_LoadsErrorControl()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var errorControl = new Error();
            containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Throws(new HttpException());
            containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/ViewPost.ascx")).Throws(new HttpException());
            containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/Error.ascx")).Returns(errorControl);
            var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" };
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost") as Error;

            // assert
            Assert.AreSame(errorControl, control);
            Assert.AreEqual("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx", control.Exception.ControlPath);
        }
        public void LoadControl_WithControlThrowingHttpParseException_LoadsErrorControlWithExceptionProperty()
        {
            // arrange
            var containerControl = new Mock<IContainerControl>();
            var exception = new HttpParseException();
            var userControl = new Mock<UserControl>();
            userControl.Stub(c => c.ID);
            var errorControl = userControl.As<IErrorControl>();
            userControl.Object.ID = "Foo.Bar";
            errorControl.Stub(c => c.Exception);
            containerControl.Setup(tc => tc.LoadControl("~/Skins/VsShirts/Controls/ViewPost.ascx")).Throws(exception);
            containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/Error.ascx")).Returns((UserControl)errorControl.Object);
            var skin = new SkinConfig { TemplateFolder = "VsShirts" };
            var skinControlLoader = new SkinControlLoader(containerControl.Object, skin);

            // act
            var control = skinControlLoader.LoadControl("ViewPost") as IErrorControl;

            // assert
            Assert.AreEqual(exception, control.Exception.InnerException);
        }