示例#1
0
        /// <summary>
        /// Begins the import using the information within the populated Control.
        /// </summary>
        /// <param name="populatedControl">Control containing the user's answers.</param>
        public static void Import(Control populatedControl, ImportProvider provider)
        {
            provider.Import(populatedControl);

            IPagedCollection<BlogInfo> blogs;

            int totalBlogCount = Config.BlogCount;
            const int pageSize = 100;
            int pages = totalBlogCount/pageSize;
            int currentPage = 1;
            SkinTemplateCollection skins = new SkinTemplateCollection();

            if (totalBlogCount % pageSize > 0)
            {
                pages++;
            }

            while (currentPage <= pages)
            {
                blogs = BlogInfo.GetBlogs(currentPage, pageSize, ConfigurationFlags.IsActive);

                foreach(BlogInfo currentBlogInfo in blogs)
                {
                    if (skins.GetTemplate(currentBlogInfo.Skin.TemplateFolder) == null)
                    {
                        currentBlogInfo.Skin = SkinConfig.GetDefaultSkin();
                        Config.UpdateConfigData(currentBlogInfo);
                    }
                }

                currentPage++;
            }
        }
示例#2
0
        public void MergedScriptIsCorrect(string skinKey, int expectedStyles)
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", "blog", string.Empty);
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            ScriptElementCollectionRenderer renderer = new ScriptElementCollectionRenderer(templates);
            int mergedStyles = renderer.GetScriptsToBeMerged(skinKey).Count;

            Assert.AreEqual(expectedStyles, mergedStyles, String.Format("Skin {0} should have {1} merged scripts but found {2}", skinKey, expectedStyles, mergedStyles));
        }
示例#3
0
        public void CanGetExcludeDefaultStyleAttribute()
        {
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);

            SkinTemplate templateWithTrueExcludedDefault = templates.GetTemplate("RedBook-Blue.css");
            Assert.IsTrue(templateWithTrueExcludedDefault.ExcludeDefaultStyle, "ExcludeDefaultStyle should be True.");

            SkinTemplate templateWithFalseExcludedDefault = templates.GetTemplate("Gradient");
            Assert.IsFalse(templateWithFalseExcludedDefault.ExcludeDefaultStyle, "ExcludeDefaultStyle should be false.");

            SkinTemplate templateWithoutExcludedDefault = templates.GetTemplate("AnotherEon001");
            Assert.IsFalse(templateWithoutExcludedDefault.ExcludeDefaultStyle, "ExcludeDefaultStyle should be false.");
        }
示例#4
0
        public void CanGetPropertiesOfSingleTemplate()
        {
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            SkinTemplate template = templates.GetTemplate("RedBook-Blue.css");
            Assert.IsNotNull(template, "Could not get the template for the skin key 'RedBook-Blue.css'");

            Assert.AreEqual("REDBOOK-BLUE.CSS", template.SkinKey, "SkinKey not correct.");
            Assert.AreEqual("BlueBook", template.Name, "Name not correct.");
            Assert.AreEqual("RedBook", template.TemplateFolder, "Folder not correct.");
            Assert.IsTrue(template.ExcludeDefaultStyle, "ExcludeDefaultStyle should be true.");
            Assert.AreEqual(1, template.Scripts.Length, "Wrong number of scripts.");
            Assert.AreEqual(6, template.Styles.Length, "Wrong number of styles.");
        }
示例#5
0
        public void CanGetScriptMergeModeAttribute()
        {
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);

            SkinTemplate templateWithMergeScriptMergeMode = templates.GetTemplate("Piyo");
            Assert.IsTrue(templateWithMergeScriptMergeMode.MergeScripts, "ScriptMergeMode should be Merge.");

            SkinTemplate templateWithDontMergeScriptMergeMode = templates.GetTemplate("Semagogy");
            Assert.IsFalse(templateWithDontMergeScriptMergeMode.MergeScripts, "ScriptMergeMode should be DontMerge.");

            SkinTemplate templateWithoutScriptMergeMode = templates.GetTemplate("RedBook-Green.css");
            Assert.IsFalse(templateWithoutScriptMergeMode.MergeScripts, "ScriptMergeMode should be None.");
        }
示例#6
0
        public void CallsToCssHandlerAreNotRepeated(string skinKey, string exptectedElements)
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", "blog", string.Empty);
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            StyleSheetElementCollectionRenderer renderer = new StyleSheetElementCollectionRenderer(templates);
            string styleElements = renderer.RenderStyleElementCollection(skinKey);
            SkinTemplate template = templates.GetTemplate(skinKey);
            Console.WriteLine(styleElements);

            string mergedCss = @"<link type=""text/css"" rel=""stylesheet"" href=""/Skins/" + template.TemplateFolder + "/css.axd?name=" + skinKey + @""" />";
            styleElements = styleElements.Replace(mergedCss, string.Empty);
            Assert.IsTrue(styleElements.Trim('\r', '\n').Equals(exptectedElements), "Not the expected stylesheet links");
        }
示例#7
0
        public void CanLoadAndMergeUserSkinsFromFile()
        {
            MockRepository mocks = new MockRepository();
            VirtualPathProvider pathProvider = (VirtualPathProvider)mocks.CreateMock(typeof(VirtualPathProvider));
            VirtualFile vfile = (VirtualFile)mocks.CreateMock(typeof(VirtualFile), "~/Admin/Skins.config");
            VirtualFile vUserFile = (VirtualFile)mocks.CreateMock(typeof(VirtualFile), "~/Admin/Skins.User.config");

            using (Stream stream = UnitTestHelper.UnpackEmbeddedResource("Skins.Skins.config"))
            using (Stream userStream = UnitTestHelper.UnpackEmbeddedResource("Skins.Skins.User.config"))
            {
                Expect.Call(vfile.Open()).Return(stream);
                Expect.Call(vUserFile.Open()).Return(userStream);
                Expect.Call(pathProvider.GetFile("~/Admin/Skins.config")).Return(vfile);
                Expect.Call(pathProvider.FileExists("~/Admin/Skins.User.config")).Return(true);
                Expect.Call(pathProvider.GetFile("~/Admin/Skins.User.config")).Return(vUserFile);

                mocks.ReplayAll();
                SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
                Assert.IsNotNull(templates, "Could not instantiate template.");
                Assert.AreEqual(18, templates.Count, "Expected 18 templates.");
            }
        }
示例#8
0
        public void StyleSheetElementCollectionRendererRendersLinkElementsInRightOrder(string skinKey, bool expectedFirst)
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", "blog", string.Empty);
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            StyleSheetElementCollectionRenderer renderer = new StyleSheetElementCollectionRenderer(templates);

            string styleElements = renderer.RenderStyleElementCollection(skinKey);
            SkinTemplate template = templates.GetTemplate(skinKey);

            Console.WriteLine(styleElements);
            styleElements = styleElements.Trim('\r', '\n');
            string mergedCss = @"<link type=""text/css"" rel=""stylesheet"" href=""/Skins/" + template.TemplateFolder + "/css.axd?name=" + skinKey + @""" />";
            if (expectedFirst)
                Assert.IsTrue(styleElements.StartsWith(mergedCss), "Merged CSS is not in first position");
            else
                Assert.IsTrue(styleElements.EndsWith(mergedCss), "Merged CSS is not in last position");
        }
 public ScriptElementCollectionRenderer(SkinTemplateCollection templates)
 {
     this.templates = templates;
 }
示例#10
0
        public void ScriptElementCollectionRendererRendersJSHandlerScript()
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", "blog", string.Empty);
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            ScriptElementCollectionRenderer renderer = new ScriptElementCollectionRenderer(templates);
            string scriptElements = renderer.RenderScriptElementCollection("RedBook-Blue.css");

            Console.WriteLine(scriptElements);

            string script = @"<script type=""text/javascript"" src=""/Skins/RedBook/js.axd?name=RedBook-Blue.css""></script>";
            Assert.IsTrue(scriptElements.IndexOf(script) > -1, "Rendered the script improperly.");
        }
示例#11
0
        public void MergeCssWithAttributes(string skinKey, int expectedStyles, string media, string title, string conditional)
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", "blog", string.Empty);
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            StyleSheetElementCollectionRenderer renderer = new StyleSheetElementCollectionRenderer(templates);
            int mergedStyles = renderer.GetStylesToBeMerged(skinKey, media, title, conditional).Count;

            Assert.AreEqual(expectedStyles, mergedStyles, String.Format("Skin {0} should have {1} merged styles but found {2}", skinKey, expectedStyles, mergedStyles));
        }
示例#12
0
        public void CanGetMergeModeAttribute()
        {
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);

            SkinTemplate templateWithMergedFirstMergeMode = templates.GetTemplate("KeyWest");
            Assert.AreEqual(StyleMergeMode.MergedFirst, templateWithMergedFirstMergeMode.StyleMergeMode, "MergeMode should be MergedFirst.");

            SkinTemplate templateWithMergedAfterMergeMode = templates.GetTemplate("Colors-Blue.css");
            Assert.AreEqual(StyleMergeMode.MergedAfter, templateWithMergedAfterMergeMode.StyleMergeMode, "MergeMode should be MergedAfter.");

            SkinTemplate templateWithNoneMergeMode = templates.GetTemplate("Lightz");
            Assert.AreEqual(StyleMergeMode.None, templateWithNoneMergeMode.StyleMergeMode, "MergeMode should be None.");

            Assert.AreNotEqual(StyleMergeMode.MergedAfter, templateWithNoneMergeMode.StyleMergeMode, "MergeMode should not be MergedAfter.");

            SkinTemplate templateWithoutMergeMode = templates.GetTemplate("Semagogy");
            Assert.AreEqual(StyleMergeMode.None, templateWithoutMergeMode.StyleMergeMode, "MergeMode should be None.");
        }
示例#13
0
        public void MergedCssDoesntContainDefaultIfExcluded()
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", "blog", string.Empty);
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            StyleSheetElementCollectionRenderer renderer = new StyleSheetElementCollectionRenderer(templates);
            List<StyleDefinition> mergedStyles = (List<StyleDefinition>)renderer.GetStylesToBeMerged("WPSkin");

            Assert.IsFalse(mergedStyles.Contains(new StyleDefinition("/Skins/WPSkin/style.css")), "Skin WPSkin should not have the default style.css");
        }
示例#14
0
        public void StyleSheetElementCollectionRendererRendersPlainCssLinkElementsWithNoneMergeModeAndSecondaryStyle(string subFolder, string applicationPath, string expectedPrintCssPath, string expectedDefaultCssPath, string expectedSecondaryCssPath)
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", subFolder, applicationPath);
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            StyleSheetElementCollectionRenderer renderer = new StyleSheetElementCollectionRenderer(templates);
            string styleElements = renderer.RenderStyleElementCollection("Nature-rain.css");

            Console.WriteLine(styleElements);

            string printCss = string.Format(@"<link media=""print"" type=""text/css"" rel=""stylesheet"" href=""{0}"" />", expectedPrintCssPath);
            Assert.IsTrue(styleElements.IndexOf(printCss) > -1, "Expected the printcss to be there.");

            string defaultCss = string.Format(@"<link type=""text/css"" rel=""stylesheet"" href=""{0}"" />", expectedDefaultCssPath);
            Assert.IsTrue(styleElements.IndexOf(defaultCss) > -1, "Expected the default css to be there.");

            string secondaryCss = string.Format(@"<link type=""text/css"" rel=""stylesheet"" href=""{0}"" />", expectedSecondaryCssPath);
            Assert.IsTrue(styleElements.IndexOf(secondaryCss) > -1, "Expected the secondary css to be there.");
        }
示例#15
0
        public void SkinsWithNoScriptsAreNotMerged()
        {
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            SkinTemplate template = templates.GetTemplate("Gradient");
            bool canBeMerged = ScriptElementCollectionRenderer.CanScriptsBeMerged(template);

            Assert.IsFalse(canBeMerged, "Skins without scripts should not be mergeable.");
        }
示例#16
0
        public void CanLoadMobileSkinsFromFile()
        {
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider, true);
            Assert.IsNotNull(templates, "Could not instantiate template.");
            Assert.AreEqual(2, templates.Count);
        }
示例#17
0
        public void MergedCssDoesntContainStyleWithMediaAndTitle()
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", "blog", string.Empty);
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            StyleSheetElementCollectionRenderer renderer = new StyleSheetElementCollectionRenderer(templates);
            List<StyleDefinition> mergedStyles = (List<StyleDefinition>)renderer.GetStylesToBeMerged("Piyo");

            Assert.IsFalse(mergedStyles.Contains(new StyleDefinition("/Skins/Piyo/piyo-fixed.css", "screen")), "Skin Piyo should not have the fixed screen css in the merged CSS");
        }
示例#18
0
        public void StyleSheetElementCollectionRendererRendersMergedCssLinkElements(string subFolder, string applicationPath, string expectedPrintCssPath)
        {
            UnitTestHelper.SetHttpContextWithBlogRequest("localhost", subFolder, applicationPath);
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            StyleSheetElementCollectionRenderer renderer = new StyleSheetElementCollectionRenderer(templates);
            string styleElements = renderer.RenderStyleElementCollection("Piyo");

            Console.WriteLine(styleElements);

            string printCss = string.Format(@"<link media=""screen"" type=""text/css"" rel=""stylesheet"" title=""fixed"" href=""{0}"" />", expectedPrintCssPath);
            Assert.IsTrue(styleElements.IndexOf(printCss) > -1, "Expected the fixed screen css to be there.");
        }
示例#19
0
        public void ScriptsWithParametricSrcAreNotMerged()
        {
            MockRepository mocks = new MockRepository();

            VirtualPathProvider pathProvider = GetTemplatesPathProviderMock(mocks);
            mocks.ReplayAll();

            SkinTemplateCollection templates = new SkinTemplateCollection(pathProvider);
            SkinTemplate template = templates.GetTemplate("Piyo");
            bool canBeMerged = ScriptElementCollectionRenderer.CanScriptsBeMerged(template);

            Assert.IsFalse(canBeMerged, "Skins with scripts that have query string parameters should not be mergeable.");
        }