示例#1
0
        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);
        }
示例#2
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);
 }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        public void LoadControl_WithControlThrowingHttpParseException_LoadsErrorControlWithExceptionHavingControlPath()
        {
            // arrange
            var containerControl = new Mock <IContainerControl>();
            var exception        = new HttpParseException();
            var errorControl     = new Error();

            containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Throws(exception);
            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 IErrorControl;

            // assert
            Assert.AreEqual("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx", control.Exception.ControlPath);
        }
示例#6
0
        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);
        }
示例#7
0
        public void InitializeBlogPage()
        {
            var skin = SkinConfig.GetCurrentSkin(Blog, SubtextContext.HttpContext);
            var skinControlLoader = new SkinControlLoader(this, skin);

            InitializeControls(skinControlLoader);

            if (skin.HasCustomCssText)
            {
                CustomCss.Attributes.Add("href", Url.CustomCssUrl());
            }
            else
            {
                //MAC IE does not like the empy CSS file, plus its a waste :)
                CustomCss.Visible = false;
            }

            if (Rsd != null)
            {
                Rsd.Attributes.Add("href", Url.RsdUrl(Blog).ToString());
            }

            if (wlwmanifest != null)
            {
                wlwmanifest.Attributes.Add("href", Url.WlwManifestUrl());
            }

            if (opensearch != null)
            {
                opensearch.Attributes.Add("href", Url.OpenSearchDescriptorUrl());
                opensearch.Attributes.Add("Title", Blog.Title);
            }

            if (RSSLink != null)
            {
                RSSLink.Attributes.Add("href", Url.RssUrl(Blog).ToString());
            }

            // if specified, add script elements
            if (scripts != null)
            {
                scripts.Text = ScriptRenderer.RenderScriptElementCollection(skin.SkinKey);
            }

            if (styles != null)
            {
                styles.Text = StyleRenderer.RenderStyleElementCollection(skin.SkinKey);
            }

            if (openIDServer != null && !string.IsNullOrEmpty(Blog.OpenIdServer))
            {
                openIDServer.Text = string.Format(OpenIdServerLocation, Blog.OpenIdServer);
            }

            if (openIDDelegate != null && !string.IsNullOrEmpty(Blog.OpenIdDelegate))
            {
                openIDDelegate.Text = string.Format(OpenIdDelegateLocation, Blog.OpenIdDelegate);
            }

            if (metaTags != null)
            {
                metaTags.Blog = Blog;
            }
        }