예제 #1
0
        private Guid CreateTemplateWithWidgetAndBasePageOnIt(PageTemplateFramework framework, Controller widgetController, out Guid pageId, out string pageUrl)
        {
            var pageManager = PageManager.GetManager();

            // Create template
            var templateId = framework == PageTemplateFramework.Hybrid ?
                             ServerOperations.Templates().CreateHybridMVCPageTemplate(FrontendModuleFilterTests.TemplateTitle + Guid.NewGuid().ToString("N")) :
                             ServerOperations.Templates().CreatePureMVCPageTemplate(FrontendModuleFilterTests.TemplateTitle + Guid.NewGuid().ToString("N"));

            // Place widget on template
            var mvcProxy = new MvcControllerProxy();

            mvcProxy.ControllerName = widgetController.GetType().FullName;
            mvcProxy.Settings       = new ControllerSettings(widgetController);
            SampleUtilities.AddControlToTemplate(templateId, mvcProxy, "Body", "FrontendModuleFilterTestsWidgetCaption");

            // Create page with template
            var template = pageManager.GetTemplates().Where(t => t.Id == templateId).SingleOrDefault();

            pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "TestPageName", "test-page-url");
            var page = pageManager.GetPageNode(pageId);

            pageUrl = RouteHelper.GetAbsoluteUrl(page.GetFullUrl());

            return(templateId);
        }
예제 #2
0
        public void CreatePage_Bootstrap_CheckFormTagNotExistPreviewMode()
        {
            Guid bootstrapPageId = Guid.Empty;

            FeatherServerOperations.FeatherModule().EnsureFeatherEnabled();

            try
            {
                var suffix                = Guid.NewGuid().ToString("N");
                var bootstrapTemplate     = this.GetDefaultBootstrapTemplate();
                var bootstrapPageName     = "PageBootstrap";
                var previewFormTagPattern = "<form[\\s].*[\\s]?id=\"aspnetForm\".*>.*";

                // page preview bootstrap
                bootstrapPageId = FeatherServerOperations.Pages().CreatePageWithTemplate(bootstrapTemplate, bootstrapPageName + suffix, bootstrapPageName + suffix);
                var bootstrapPagePreviewFormTagsCount = this.PagePreviewFormTags(bootstrapPageId, previewFormTagPattern);

                // template preview bootstrap
                var bootstrapTemplatePreviewFormTagsCount = this.TemplatePreviewFormTags(bootstrapTemplate, previewFormTagPattern);

                Assert.IsFalse(bootstrapPagePreviewFormTagsCount == 1, "Default ASP.Net form tag exist in Bootstrap package in page preview mode");
                Assert.IsFalse(bootstrapTemplatePreviewFormTagsCount == 1, "Default ASP.Net form tag exist for Bootstrap package in template preview mode");
            }
            finally
            {
                if (bootstrapPageId != Guid.Empty)
                {
                    ServerOperations.Pages().DeletePage(bootstrapPageId);
                }
            }
        }
예제 #3
0
        public void Navigation_MarkupIsCorrect()
        {
            var controller = new NavigationFieldController();

            var control = new MvcWidgetProxy();

            control.ControllerName = typeof(NavigationFieldController).FullName;
            control.Settings       = new ControllerSettings(controller);

            var formId      = ServerOperationsFeather.Forms().CreateFormWithWidget(control);
            var pageManager = PageManager.GetManager();

            try
            {
                var template = pageManager.GetTemplates().FirstOrDefault(t => t.Name == "SemanticUI.default" && t.Title == "default");
                Assert.IsNotNull(template, "Template was not found");

                var pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "NavigationFieldValueTest", "section-header-field-value-test");
                ServerOperationsFeather.Forms().AddFormControlToPage(pageId, formId);

                var pageContent = ServerOperationsFeather.Pages().GetPageContent(pageId);

                var pageName = Res.Get <FieldResources>().PageName + "1";
                Assert.IsTrue(pageContent.Contains(pageName), "Form did not render navigation field pages");
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
                FormsModuleCodeSnippets.DeleteForm(formId);
            }
        }
예제 #4
0
        public void ParagraphTextFieldTests_EditDefaultValue_MarkupIsCorrect()
        {
            const string DefaultText = "My default text";

            var controller = new ParagraphTextFieldController();

            controller.MetaField.DefaultValue = DefaultText;

            var control = new MvcWidgetProxy();

            control.Settings       = new ControllerSettings(controller);
            control.ControllerName = typeof(ParagraphTextFieldController).FullName;

            var formId = ServerOperationsFeather.Forms().CreateFormWithWidget(control);

            var pageManager = PageManager.GetManager();

            try
            {
                var template = pageManager.GetTemplates().FirstOrDefault(t => t.Name == "SemanticUI.default" && t.Title == "default");
                Assert.IsNotNull(template, "Template was not found");

                var pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "ParagraphTextFieldSubmitValueTest", "paragraph-text-field-value-test");
                ServerOperationsFeather.Forms().AddFormControlToPage(pageId, formId);

                var pageContent = ServerOperationsFeather.Pages().GetPageContent(pageId);
                Assert.IsTrue(pageContent.Contains(DefaultText), "Form did not render the default text in the paragraph text field.");
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
                FormsModuleCodeSnippets.DeleteForm(formId);
            }
        }
예제 #5
0
        private int PagePreviewFormTags(Guid pageId, string previewFormTagPattern)
        {
            string pagePreviewContent       = FeatherServerOperations.Pages().GetPageContent(pageId, true, "action/preview");
            var    pagePreviewFormTagsCount = Regex.Matches(pagePreviewContent, previewFormTagPattern, RegexOptions.IgnoreCase).Count;

            return(pagePreviewFormTagsCount);
        }
예제 #6
0
        public void TextField_EditInputType_MarkupIsCorrect()
        {
            var control = new MvcWidgetProxy();

            control.ControllerName = typeof(TextFieldController).FullName;
            var controller = new TextFieldController();

            controller.Model.InputType = Telerik.Sitefinity.Frontend.Forms.Mvc.Models.Fields.TextField.TextType.DateTimeLocal;
            control.Settings           = new ControllerSettings(controller);

            var formId = ServerOperationsFeather.Forms().CreateFormWithWidget(control);

            var pageManager = PageManager.GetManager();

            try
            {
                var template = pageManager.GetTemplates().FirstOrDefault(t => t.Name == "SemanticUI.default" && t.Title == "default");
                Assert.IsNotNull(template, "Template was not found");

                var pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "TextFieldTypeTest", "text-field-type-test");
                ServerOperationsFeather.Forms().AddFormControlToPage(pageId, formId);

                var pageContent = ServerOperationsFeather.Pages().GetPageContent(pageId);

                Assert.IsTrue(pageContent.Contains("type=\"datetime-local\""), "Form did not render the input type in the text field.");
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
                FormsModuleCodeSnippets.DeleteForm(formId);
            }
        }
예제 #7
0
        public void LayoutTemplates_CreateTemplateAndAddLayoutFile_VerifyTemplateBasedOnLayout()
        {
            var folderPath = Path.Combine(this.SfPath, "MVC", "Views", "Layouts");

            try
            {
                var  templateId = ServerOperations.Templates().CreatePureMVCPageTemplate(TemplateTitle);
                Guid pageId     = ServerOperations.Pages().CreatePage(PageTitle, templateId);

                if (!Directory.Exists(folderPath))
                {
                    Directory.CreateDirectory(folderPath);
                }

                string filePath = Path.Combine(folderPath, LayoutFileName);

                FeatherServerOperations.ResourcePackages().AddNewResource(LayoutFileResource, filePath);

                var nodeId      = ServerOperations.Pages().GetPageNodeId(pageId);
                var pageContent = FeatherServerOperations.Pages().GetPageContent(nodeId);
                Assert.IsTrue(pageContent.Contains(TestLayoutTemplateText), "Layout text was not found on the page");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Templates().DeletePageTemplate(TemplateTitle);

                var filePath = Path.Combine(folderPath, LayoutFileName);
                File.Delete(filePath);
            }
        }
        public void FormsWidget_AddWidgetToFormDescription_FormIsUpdated()
        {
            var gridVirtualPath = "~/Frontend-Assembly/Telerik.Sitefinity.Frontend/GridSystem/Templates/grid-3+9.html";
            var control = new GridControl();
            control.Layout = gridVirtualPath;
            var formId = ServerOperationsFeather.Forms().CreateFormWithWidget(control);

            var pageManager = PageManager.GetManager();

            try
            {
                var template = pageManager.GetTemplates().FirstOrDefault(t => t.Name == "SemanticUI.default" && t.Title == "default");
                Assert.IsNotNull(template, "Template was not found");

                var pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "FormsPageCacheTest", "forms-page-cache-test");
                ServerOperationsFeather.Forms().AddFormControlToPage(pageId, formId);

                string pageContent = FeatherServerOperations.Pages().GetPageContent(pageId);

                Assert.IsTrue(pageContent.Contains("class=\"sf_colsIn four wide column\""), "SemanticUI grid content not found.");

                ServerOperationsFeather.Forms().AddFormWidget(formId, new GridControl() { Layout = "<div class=\"sf_colsIn\">Funny widget.</div>" });
                pageContent = FeatherServerOperations.Pages().GetPageContent(pageId);

                Assert.IsTrue(pageContent.Contains("Funny widget."), "Form did not render the new control.");
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
                FormsModuleCodeSnippets.DeleteForm(formId);
            }
        }
예제 #9
0
        public void DropdownListFieldTests_EditDefaultValue_MarkupIsCorrect()
        {
            var controller = new DropdownListFieldController();

            var control = new MvcWidgetProxy();

            control.Settings       = new ControllerSettings(controller);
            control.ControllerName = typeof(DropdownListFieldController).FullName;

            var formId = ServerOperationsFeather.Forms().CreateFormWithWidget(control);

            var pageManager = PageManager.GetManager();

            try
            {
                var template = pageManager.GetTemplates().FirstOrDefault(t => t.Name == "SemanticUI.default" && t.Title == "default");
                Assert.IsNotNull(template, "Template was not found");

                var pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "DropdownListFieldSubmitValueTest", "dropdown-list-field-value-test");
                ServerOperationsFeather.Forms().AddFormControlToPage(pageId, formId);

                var pageContent = ServerOperationsFeather.Pages().GetPageContent(pageId);
                Assert.IsTrue(pageContent.Contains(Res.Get <FieldResources>().OptionSelect), "Form did not render the select default choice in the dropdown list field.");
                Assert.IsTrue(pageContent.Contains(Res.Get <FieldResources>().OptionFirstChoice), "Form did not render the first default choice in the dropdown list field.");
                Assert.IsTrue(pageContent.Contains(Res.Get <FieldResources>().OptionSecondChoice), "Form did not render the second default choice in the dropdown list field.");
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
                FormsModuleCodeSnippets.DeleteForm(formId);
            }
        }
예제 #10
0
        public void ResourcePackageLayoutFiles_CreateTemplateAndAddLayoutFile_VerifyPublicPage()
        {
            string packageName            = "TestPackageNoLayouts";
            string packageResource        = "Telerik.Sitefinity.Frontend.TestUtilities.Data.TestPackageNoLayouts.zip";
            string layoutName             = "TestLayout.cshtml";
            string layoutResource         = "Telerik.Sitefinity.Frontend.TestUtilities.Data.TestLayout.cshtml";
            string templateTitle          = "TestPackageNoLayouts.TestLayout";
            string pageTitle              = "FeatherTestPage";
            string testLayoutTemplateText = "Test Layout";

            string packagePath = FeatherServerOperations.ResourcePackages().GetResourcePackagesDestination(packageName);

            FeatherServerOperations.ResourcePackages().AddNewResourcePackage(packageResource);

            try
            {
                var  templateId = FeatherServerOperations.Pages().CreatePureMvcTemplate(templateTitle);
                Guid pageId     = ServerOperations.Pages().CreatePage(pageTitle, templateId);

                var filePath = Path.Combine(packagePath, "MVC", "Views", "Layouts", layoutName);
                FeatherServerOperations.ResourcePackages().AddNewResource(layoutResource, filePath);

                var nodeId      = ServerOperations.Pages().GetPageNodeId(pageId);
                var pageContent = FeatherServerOperations.Pages().GetPageContent(nodeId);
                Assert.IsTrue(pageContent.Contains(testLayoutTemplateText), "Layout text was not found on the page");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Templates().DeletePageTemplate(templateTitle);
                FeatherServerOperations.ResourcePackages().DeleteDirectory(packagePath);
            }
        }
        public void SetUp()
        {
            string templateName = ServerArrangementContext.GetCurrent().Values["templateName"];

            Guid templateId   = ServerOperations.Templates().GetTemplateIdByTitle(templateName);
            Guid parentPageId = ServerOperations.Pages().CreatePage(PageName, templateId);
            Guid pageNodeId   = ServerOperations.Pages().GetPageNodeId(parentPageId);

            FeatherServerOperations.Pages().AddMvcWidgetToPage(pageNodeId, typeof(NavigationController).FullName, WidgetCaption, PlaceHolderId);

            Guid childPage1Id = Guid.NewGuid();

            ServerOperations.Pages().CreatePage(ChildPage1, childPage1Id, pageNodeId);

            ServerOperations.Pages().CreateInternalRedirectPage(Page2Redirect, pageNodeId);

            ServerOperations.Pages().CreateExternalRedirectPage(Page1Redirect, ExternalUrl);

            Guid unpublisId = ServerOperations.Pages().CreatePage(UnpublishPage);

            ServerOperations.Multilingual().Pages().UnpublishPage(unpublisId);

            ServerOperations.Pages().CreateDraftPage(PageDraft);

            Guid pageGroup2Id = Guid.NewGuid();

            ServerOperations.Pages().CreatePageGroup(pageGroup2Id, Guid.Empty, Page2Group);

            Guid pageGroupId = Guid.NewGuid();

            ServerOperations.Pages().CreatePageGroup(pageGroupId, Guid.Empty, PageGroup);
            Guid childPage2Id = Guid.NewGuid();

            ServerOperations.Pages().CreatePage(ChildPage2, childPage2Id, pageGroupId);
        }
예제 #12
0
        public void FoundationResourcePackage_AddNewLayoutFile_VerifyGeneratedTemplateAndCreatedPageContent()
        {
            int templatesCount = this.PageManager.GetTemplates().Count();

            try
            {
                string filePath = FeatherServerOperations.ResourcePackages().GetResourcePackageDestinationFilePath(Constants.PackageName, Constants.LayoutFileName);
                FeatherServerOperations.ResourcePackages().AddNewResource(Constants.LayoutFileResource, filePath);

                FeatherServerOperations.ResourcePackages().WaitForTemplatesCountToIncrease(templatesCount, 1);

                var template = this.PageManager.GetTemplates().Where(t => t.Title == Constants.TemplateTitle).FirstOrDefault();
                Assert.IsNotNull(template, "Template was not found");

                Guid pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, Constants.PageTitle, Constants.PageUrl);

                var page    = this.PageManager.GetPageNode(pageId);
                var pageUrl = page.GetFullUrl();
                pageUrl = RouteHelper.GetAbsoluteUrl(pageUrl);

                string pageContent = WebRequestHelper.GetPageWebContent(pageUrl);
                Assert.IsTrue(pageContent.Contains(Constants.LayoutTemplateText), "Layout template text was not found in the page content");
            }
            finally
            {
                ServerOperations.Pages().DeletePage(Constants.PageTitle);
                ServerOperations.Templates().DeletePageTemplate(Constants.TemplateTitle);

                string filePath = FeatherServerOperations.ResourcePackages().GetResourcePackageDestinationFilePath(Constants.PackageName, Constants.LayoutFileName);
                File.Delete(filePath);
            }
        }
예제 #13
0
        public void ResourcePackageLayoutFiles_ReplaceLayoutFile_VerifyTemplateAndPage()
        {
            string resourceForReplace         = "Telerik.Sitefinity.Frontend.TestUtilities.Data.LayoutFileReplace.Package1.zip";
            string packageResource            = "Telerik.Sitefinity.Frontend.TestUtilities.Data.Package1.zip";
            string packageName                = "Package1";
            string layoutFile                 = "test-layout.cshtml";
            string backFileName               = "test-layout.cshtml.bac";
            string sitefinityPath             = FeatherServerOperations.ResourcePackages().SfPath;
            string tempFolder                 = "Temp";
            string templateTitle              = "test-layout";
            string layoutTemplateText         = "Package1 - test layout";
            string layoutTemplateTextReplaced = "Package1 - test layout REPLACED";
            string page = "featherpage";

            PageManager pm             = PageManager.GetManager();
            int         templatesCount = pm.GetTemplates().Count();

            string tempFolderPath = Path.Combine(sitefinityPath, tempFolder);

            if (!Directory.Exists(tempFolderPath))
            {
                Directory.CreateDirectory(tempFolderPath);
            }

            string filePath     = FeatherServerOperations.ResourcePackages().GetResourcePackageDestinationFilePath(packageName, layoutFile);
            string packagePath  = FeatherServerOperations.ResourcePackages().GetResourcePackagesDestination(packageName);
            string tempFilePath = Path.Combine(tempFolderPath, packageName, "Mvc", "Views", "Layouts", layoutFile);
            string backFilePath = Path.Combine(packagePath, backFileName);

            try
            {
                FeatherServerOperations.ResourcePackages().AddNewResourcePackage(resourceForReplace, tempFolderPath);
                FeatherServerOperations.ResourcePackages().AddNewResourcePackage(packageResource);
                FeatherServerOperations.ResourcePackages().WaitForTemplatesCountToIncrease(templatesCount, 1);

                var template = pm.GetTemplates().Where(t => t.Title == templateTitle).FirstOrDefault();
                Assert.IsNotNull(template, "Template was not found");

                Guid pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, page, page);

                string pageContent = FeatherServerOperations.Pages().GetPageContent(pageId);
                Assert.IsTrue(pageContent.Contains(layoutTemplateText), "Layout template text was not found in the page content");

                File.Replace(tempFilePath, filePath, backFilePath);

                Thread.Sleep(1000);

                pageContent = FeatherServerOperations.Pages().GetPageContent(pageId);

                Assert.AreEqual(pm.GetTemplates().Count(), templatesCount + 1, "Unnecessary template was generated");
                Assert.IsTrue(pageContent.Contains(layoutTemplateTextReplaced), "New layout text was not found in the page content after replace");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Templates().DeletePageTemplate(templateTitle);
                FeatherServerOperations.ResourcePackages().DeleteDirectory(packagePath);
                FeatherServerOperations.ResourcePackages().DeleteDirectory(tempFolderPath);
            }
        }
예제 #14
0
        public void OutputCache_NoTempData_IsRetrievedFromCache()
        {
            var pageTitle   = "FeatherPage";
            var pageUrl     = "featherpage";
            var widgetName  = "DateTimeWidet";
            var placeholder = "Contentplaceholder1";
            var url         = UrlPath.ResolveAbsoluteUrl("~/" + pageUrl);

            try
            {
                DateTimeController.Count = 0;
                PageManager pageManager = PageManager.GetManager();
                var         template    = pageManager.GetTemplates().FirstOrDefault(t => (t.Name == "Bootstrap.default" && t.Title == "default") || t.Title == "Bootstrap.default");
                Assert.IsNotNull(template, "Template was not found");

                Guid pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, pageTitle, pageUrl);
                FeatherServerOperations.Pages().AddMvcWidgetToPage(pageId, typeof(DateTimeController).FullName, widgetName, placeholder);

                using (new AuthenticateUserRegion(null))
                {
                    var webRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
                    webRequest.GetResponse();
                    webRequest.GetResponse();

                    Assert.AreEqual(1, DateTimeController.Count, "The content should be the same because the page is cached.");
                }
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
            }
        }
예제 #15
0
        private void AddDummyScriptControllerToPage(string pageTitlePrefix, string urlNamePrefix, PageTemplate template, string placeHolder = "Body")
        {
            var controls  = new List <System.Web.UI.Control>();
            var mvcProxy1 = new MvcControllerProxy();

            mvcProxy1.ControllerName = typeof(DummyScriptController).FullName;
            var newsController1 = new DummyScriptController();

            mvcProxy1.Settings = new ControllerSettings(newsController1);
            controls.Add(mvcProxy1);

            var mvcProxy2 = new MvcControllerProxy();

            mvcProxy2.ControllerName = typeof(DummyScriptController).FullName;
            var newsController2 = new DummyScriptController();

            mvcProxy2.Settings = new ControllerSettings(newsController2);
            controls.Add(mvcProxy2);

            Guid pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(
                template,
                pageTitlePrefix,
                urlNamePrefix);

            PageContentGenerator.AddControlsToPage(pageId, controls, placeHolder);
        }
예제 #16
0
        public void ContentBlock_PureMvcPageWithContentBlockWidget_VerifySearch()
        {
            string searchIndex   = "TestSearchIndex";
            var    searchIndexId = Guid.NewGuid();

            try
            {
                searchIndexId = ServerOperations.Search().CreateIndex(searchIndex);

                var templateId = FeatherServerOperations.Pages().CreatePureMvcTemplate(PageTemplate);
                var pageId     = ServerOperations.Pages().CreatePage(PageTitle, templateId);
                pageId = ServerOperations.Pages().GetPageNodeId(pageId);
                ServerOperationsFeather.Pages().AddContentBlockWidgetToPage(pageId, ContentBlockText);

                this.Reindex(searchIndexId);
                this.SearchWithWaitOperation(searchIndex, ContentBlockText, 1);
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Templates().DeletePageTemplate(PageTemplate);
                this.DeleteSearchIndex(searchIndex, searchIndexId);
                this.EmptySearchFoler();
            }
        }
예제 #17
0
        public void GridWidget_DeleteGridWidgetOnPageFromFileSystem()
        {
            PageManager pageManager = PageManager.GetManager();

            var gridVirtualPath     = "~/ResourcePackages/Bootstrap/GridSystem/Templates/grid-9+3.html";
            var gridTemplatePath    = Path.Combine(this.SfPath, "ResourcePackages", "Bootstrap", "GridSystem", "Templates", "grid-9+3.html");
            var newGridTemplatePath = Path.Combine(this.SfPath, "ResourcePackages", "Bootstrap", "GridSystem", "Templates", "grid-9+3-New.html");

            File.Copy(gridTemplatePath, newGridTemplatePath);

            try
            {
                var template = pageManager.GetTemplates().Where(t => t.Title == TemplateTitle).FirstOrDefault();
                Assert.IsNotNull(template, "Template was not found");

                Guid pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, PageNamePrefix, UrlNamePrefix);

                this.AddGridControlToPage(pageId, gridVirtualPath, PlaceHolder, Caption);

                File.Delete(gridTemplatePath);

                string pageContent = this.GetPageContent(pageId);

                Assert.IsTrue(pageContent.Contains(Row3), "Grid row not found in the page content");
                Assert.IsTrue(pageContent.Contains(Row9), "Grid row not found in the page content");
            }
            finally
            {
                File.Move(newGridTemplatePath, gridTemplatePath);
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
            }
        }
예제 #18
0
        public void PageBreak_SeparatorsMarkupIsCorrect()
        {
            var controller = new PageBreakController();

            var control = new MvcWidgetProxy();

            control.ControllerName = typeof(PageBreakController).FullName;
            control.Settings       = new ControllerSettings(controller);

            var formId = ServerOperationsFeather.Forms().CreateFormWithWidget(control);

            var pageManager = PageManager.GetManager();

            try
            {
                var template = pageManager.GetTemplates().FirstOrDefault(t => t.Name == "SemanticUI.default" && t.Title == "default");
                Assert.IsNotNull(template, "Template was not found");

                var pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "PageBreakValueTest", "page-break-value-test");
                ServerOperationsFeather.Forms().AddFormControlToPage(pageId, formId);

                var pageContent            = ServerOperationsFeather.Pages().GetPageContent(pageId);
                var formMultipageDecorator = ObjectFactory.Resolve <IFormMultipageDecorator>();
                Assert.IsTrue(pageContent.Contains(formMultipageDecorator.SeparatorBegin), "Form did not render page separators");
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
                FormsModuleCodeSnippets.DeleteForm(formId);
            }
        }
예제 #19
0
        public void SetUp()
        {
            Guid templateId = ServerOperations.Templates().GetTemplateIdByTitle(BootstrapTemplate);
            Guid pageId     = ServerOperations.Pages().CreatePage(PageName, templateId);
            Guid pageNodeId = ServerOperations.Pages().GetPageNodeId(pageId);

            FeatherServerOperations.Pages().AddMvcWidgetToPage(pageNodeId, typeof(MvcTestController).FullName, WidgetCaption, PlaceHolderId);
        }
예제 #20
0
        public void LayoutTemplates_ReplaceLayoutFile_VerifyGeneratedTemplateAndCreatedPageContent()
        {
            PageManager pageManager    = PageManager.GetManager();
            int         templatesCount = pageManager.GetTemplates().Count();

            string folderPath = Path.Combine(this.SfPath, "MVC", "Views", "Layouts");

            if (!Directory.Exists(folderPath))
            {
                Directory.CreateDirectory(folderPath);
            }

            string tempFolderPath = Path.Combine(this.SfPath, "MVC", "Views", "Temp");

            if (!Directory.Exists(tempFolderPath))
            {
                Directory.CreateDirectory(tempFolderPath);
            }

            string newLayoutTemplateText = "Test Layout Replaced";
            string layoutResource        = "Telerik.Sitefinity.Frontend.TestUtilities.Data.LayoutFileReplace.TestLayout.cshtml";
            string backFileName          = "TestLayout.cshtml.bac";
            string filePath     = Path.Combine(folderPath, LayoutFileName);
            string tempFilePath = Path.Combine(tempFolderPath, LayoutFileName);
            string backFilePath = Path.Combine(folderPath, backFileName);

            try
            {
                FeatherServerOperations.ResourcePackages().AddNewResource(LayoutFileResource, filePath);
                FeatherServerOperations.ResourcePackages().WaitForTemplatesCountToIncrease(templatesCount, 1);

                var template = pageManager.GetTemplates().Where(t => t.Title == TemplateTitle).FirstOrDefault();
                Assert.IsNotNull(template, "Template was not found");

                Guid pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, PageTitle, PageUrl);

                string pageContent = FeatherServerOperations.Pages().GetPageContent(pageId);
                Assert.IsTrue(pageContent.Contains(LayoutTemplateText), "Layout template text was not found in the page content");

                FeatherServerOperations.ResourcePackages().AddNewResource(layoutResource, tempFilePath);
                File.Replace(tempFilePath, filePath, backFilePath);

                Thread.Sleep(1000);

                pageContent = FeatherServerOperations.Pages().GetPageContent(pageId);

                Assert.AreEqual(pageManager.GetTemplates().Count(), templatesCount + 1, "Unnecessary template was generated");
                Assert.IsTrue(pageContent.Contains(newLayoutTemplateText), "New layout text was not found in the page content after replace");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Templates().DeletePageTemplate(TemplateTitle);
                File.Delete(filePath);
                File.Delete(backFilePath);
                FeatherServerOperations.ResourcePackages().DeleteDirectory(tempFolderPath);
            }
        }
예제 #21
0
        public void SetUp()
        {
            ServerOperations.Documents().Upload(DefaultLibraryTitle, DocumentTitle, DocumentResource);

            Guid templateId = ServerOperations.Templates().GetTemplateIdByTitle(BootstrapTemplate);
            Guid pageId     = ServerOperations.Pages().CreatePage(PageName, templateId);
            Guid pageNodeId = ServerOperations.Pages().GetPageNodeId(pageId);

            FeatherServerOperations.Pages().AddMvcWidgetToPage(pageNodeId, typeof(TestMediaSelectorFieldController).FullName, WidgetCaption, PlaceHolderId);
        }
        public void SetUp()
        {
            string templateName = ServerArrangementContext.GetCurrent().Values["templateName"];

            Guid templateId   = ServerOperations.Templates().GetTemplateIdByTitle(templateName);
            Guid parentPageId = ServerOperations.Pages().CreatePage(PageName, templateId);
            Guid pageNodeId   = ServerOperations.Pages().GetPageNodeId(parentPageId);

            FeatherServerOperations.Pages().AddMvcWidgetToPage(pageNodeId, typeof(NavigationController).FullName, WidgetCaption, PlaceHolderId);
            ServerOperations.Pages().CreatePage(SiblingPageName);
        }
예제 #23
0
        public void ResourcePackage_DeleteResourcePackage_VerifyTemplateAndPageNotBasedOnLayout()
        {
            string pageName        = "FeatherPage" + Guid.NewGuid().ToString();
            string packageName     = "Package1";
            string packageResource = "Telerik.Sitefinity.Frontend.TestUtilities.Data.Package1.zip";
            string templateTitle   = "Package1.test-layout";
            string layoutText      = "Package1 - test layout";
            string serverErrorMsg  = "Server Error";

            PageManager pm     = PageManager.GetManager();
            Guid        pageId = ServerOperations.Pages().CreatePage(pageName);

            int templatesCount = pm.GetTemplates().Count();

            FeatherServerOperations.ResourcePackages().AddNewResourcePackage(packageResource);
            FeatherServerOperations.ResourcePackages().WaitForTemplatesCountToIncrease(templatesCount, 1);

            var template = pm.GetTemplates().FirstOrDefault(t => t.Name == templateTitle);

            Assert.IsNotNull(template, "Template was not found");

            string path = FeatherServerOperations.ResourcePackages().GetResourcePackagesDestination(packageName);

            try
            {
                ServerOperations.Templates().SetTemplateToPage(pageId, template.Id);

                var content = FeatherServerOperations.Pages().GetPageContent(pageId);
                Assert.IsTrue(content.Contains(layoutText), "Template is not based on the layout file");

                FeatherServerOperations.ResourcePackages().DeleteDirectory(path);

                if (Directory.Exists(path))
                {
                    throw new ArgumentException("Directory was not deleted");
                }

                Thread.Sleep(1000);

                content = FeatherServerOperations.Pages().GetPageContent(pageId);
                Assert.IsFalse(content.Contains(serverErrorMsg), "Server Error was found on the page.");
                Assert.IsFalse(content.Contains(layoutText), "Template is still based on the layout file after package is deleted");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Templates().DeletePageTemplate(templateTitle);

                if (Directory.Exists(path))
                {
                    FeatherServerOperations.ResourcePackages().DeleteDirectory(path);
                }
            }
        }
예제 #24
0
        public void ParagraphTextField_SubmitValue_ResponseIsCorrect()
        {
            const string SubmitedParagraphValue = "Submitted paragraph value";

            var controller = new ParagraphTextFieldController();

            var control = new MvcWidgetProxy();

            control.Settings       = new ControllerSettings(controller);
            control.ControllerName = typeof(ParagraphTextFieldController).FullName;

            var formId = ServerOperationsFeather.Forms().CreateFormWithWidget(control);

            var formManager = FormsManager.GetManager();
            var form        = formManager.GetForms().FirstOrDefault(f => f.Id == formId);

            var pageManager = PageManager.GetManager();

            try
            {
                var template = pageManager.GetTemplates().FirstOrDefault(t => t.Name == "SemanticUI.default" && t.Title == "default");
                Assert.IsNotNull(template, "Template was not found");

                var pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "ParagraphTextFieldValueTest", "paragraph-text-field-submit-value-test");
                ServerOperationsFeather.Forms().AddFormControlToPage(pageId, formId);
                var pageDataId = pageManager.GetPageNode(pageId).GetPageData().Id;
                var paragraphTextFieldControlData = form.Controls.Where(c => c.PlaceHolder == "Body" && !c.IsLayoutControl).FirstOrDefault();
                var mvcFieldProxy = formManager.LoadControl(paragraphTextFieldControlData) as MvcWidgetProxy;

                var paragraphTextField = mvcFieldProxy.Controller as ParagraphTextFieldController;
                Assert.IsNotNull(paragraphTextField, "The paragraph text field was not found.");

                var paragraphTextFieldName = paragraphTextField.MetaField.FieldName;
                var formCollection         = new FormCollection();
                formCollection.Add(paragraphTextFieldName, SubmitedParagraphValue);
                var formControllerProxy = pageManager.LoadPageControls <MvcControllerProxy>(pageDataId).Where(contr => contr.Controller.GetType() == typeof(FormController)).FirstOrDefault();
                var formController      = formControllerProxy.Controller as FormController;
                formController.ControllerContext             = new ControllerContext();
                formController.ControllerContext.HttpContext = new HttpContextWrapper(HttpContext.Current);
                formController.Index(formCollection);

                var formEntry = formManager.GetFormEntries(form).LastOrDefault();
                Assert.IsNotNull(formEntry, "Form entry has not been submitted.");

                var submittedValue = formEntry.GetValue(paragraphTextFieldName) as string;
                Assert.AreEqual(SubmitedParagraphValue, submittedValue, "Form did not persisted the submitted paragraph text value correctly.");
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
                FormsModuleCodeSnippets.DeleteForm(formId);
            }
        }
예제 #25
0
        public void PageBreak_HeaderAndFooterFieldsInitialized()
        {
            var controllerForBody = new PageBreakController();
            var controlForBody    = new MvcWidgetProxy();

            controlForBody.ControllerName = typeof(PageBreakController).FullName;
            controlForBody.Settings       = new ControllerSettings(controllerForBody);

            var controllerForHeader = new TextFieldController();
            var controlForHeader    = new MvcWidgetProxy();

            controlForHeader.ControllerName = typeof(TextFieldController).FullName;
            controlForHeader.Settings       = new ControllerSettings(controllerForHeader);

            var controllerForFooter = new ParagraphTextFieldController();
            var controlForFooter    = new MvcWidgetProxy();

            controlForFooter.ControllerName = typeof(ParagraphTextFieldController).FullName;
            controlForFooter.Settings       = new ControllerSettings(controllerForFooter);

            var formId = ServerOperationsFeather.Forms().CreateFormWithWidgets(new List <Control>()
            {
                controlForHeader
            }, new List <Control>()
            {
                controlForBody
            }, new List <Control>()
            {
                controlForFooter
            }, null);
            var pageManager = PageManager.GetManager();

            try
            {
                var template = pageManager.GetTemplates().FirstOrDefault(t => t.Name == "SemanticUI.default" && t.Title == "default");
                Assert.IsNotNull(template, "Template was not found");

                var pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "PageBreakValueTest", "section-header-field-value-test");
                ServerOperationsFeather.Forms().AddFormControlToPage(pageId, formId);

                var pageContent            = ServerOperationsFeather.Pages().GetPageContent(pageId);
                var formMultipageDecorator = ObjectFactory.Resolve <IFormMultipageDecorator>();
                Assert.IsTrue(pageContent.Contains(formMultipageDecorator.SeparatorBegin), "Form did not render page separators");
                Assert.IsTrue(pageContent.Contains("data-sf-role=\"text-field-container\""), "Form did not render page header");
                Assert.IsTrue(pageContent.Contains("data-sf-role=\"paragraph-text-field-container\""), "Form did not render page footer");
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
                FormsModuleCodeSnippets.DeleteForm(formId);
            }
        }
예제 #26
0
        public void LayoutTemplates_EditLayoutFile_VerifyGeneratedTemplateAndCreatedPageContent()
        {
            PageManager pageManager    = PageManager.GetManager();
            int         templatesCount = pageManager.GetTemplates().Count();

            var folderPath = Path.Combine(this.SfPath, "MVC", "Views", "Layouts");

            try
            {
                if (!Directory.Exists(folderPath))
                {
                    Directory.CreateDirectory(folderPath);
                }

                string filePath = Path.Combine(folderPath, LayoutFileName);

                FeatherServerOperations.ResourcePackages().AddNewResource(LayoutFileResource, filePath);

                FeatherServerOperations.ResourcePackages().WaitForTemplatesCountToIncrease(templatesCount, 1);

                var template = pageManager.GetTemplates().Where(t => t.Title == TemplateTitle).FirstOrDefault();
                Assert.IsNotNull(template, "Template was not found");

                Guid pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, PageTitle, PageUrl);

                var page    = pageManager.GetPageNode(pageId);
                var pageUrl = page.GetFullUrl();
                pageUrl = RouteHelper.GetAbsoluteUrl(pageUrl);

                string pageContent = WebRequestHelper.GetPageWebContent(pageUrl);
                Assert.IsTrue(pageContent.Contains(LayoutTemplateText), "Layout template text was not found in the page content");

                string layoutFile = Path.Combine(folderPath, LayoutFileName);
                FeatherServerOperations.ResourcePackages().EditLayoutFile(layoutFile, TestLayoutTemplateText, TestLayoutTemplateTextEdited);

                Thread.Sleep(1000);

                pageContent = WebRequestHelper.GetPageWebContent(pageUrl);

                Assert.IsFalse(pageContent.Contains(ServerErrorMessage), "Page throws a server error message");
                Assert.IsFalse(pageContent.Contains(TestLayoutTemplateText), "Layout template text was found in the page content");
                Assert.IsTrue(pageContent.Contains(TestLayoutTemplateTextEdited), "New layout text was not found in the page content");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Templates().DeletePageTemplate(TemplateTitle);

                var filePath = Path.Combine(folderPath, LayoutFileName);
                File.Delete(filePath);
            }
        }
예제 #27
0
        public void ParagraphTextFieldUrl_SubmitIncorrectValue_ServerValidationFails()
        {
            var controller = new ParagraphTextFieldController();

            controller.Model.ValidatorDefinition.Required = true;

            var control = new MvcWidgetProxy();

            control.ControllerName = typeof(ParagraphTextFieldController).FullName;
            control.Settings       = new ControllerSettings(controller);

            var formId = ServerOperationsFeather.Forms().CreateFormWithWidget(control);

            var formManager = FormsManager.GetManager();
            var form        = formManager.GetForms().FirstOrDefault(f => f.Id == formId);

            var pageManager = PageManager.GetManager();

            try
            {
                var template = pageManager.GetTemplates().FirstOrDefault(t => t.Name == "SemanticUI.default" && t.Title == "default");
                Assert.IsNotNull(template, "Template was not found");

                var pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, "ParagraphTextFieldValidationTest", "paragraph-text-field-validation-test");
                ServerOperationsFeather.Forms().AddFormControlToPage(pageId, formId);
                var pageDataId = pageManager.GetPageNode(pageId).GetPageData().Id;
                var paragraphTextFieldControlData = form.Controls.Where(c => c.PlaceHolder == "Body" && !c.IsLayoutControl).FirstOrDefault();
                var mvcFieldProxy = formManager.LoadControl(paragraphTextFieldControlData) as MvcWidgetProxy;

                var paragraphTextField = mvcFieldProxy.Controller as ParagraphTextFieldController;
                Assert.IsNotNull(paragraphTextField, "The paragraph text field was not found.");

                var paragraphTextFieldName = paragraphTextField.MetaField.FieldName;
                var formCollection         = new FormCollection();
                formCollection.Add(paragraphTextFieldName, string.Empty);
                var formControllerProxy = pageManager.LoadPageControls <MvcControllerProxy>(pageDataId).Where(contr => contr.Controller.GetType() == typeof(FormController)).FirstOrDefault();
                var formController      = formControllerProxy.Controller as FormController;
                formController.ControllerContext             = new ControllerContext();
                formController.ControllerContext.HttpContext = new HttpContextWrapper(HttpContext.Current);

                formController.Index(formCollection);
                Assert.IsFalse((bool)formController.TempData["sfSubmitSuccess"], "The Submit result was not correct");

                var formEntry = formManager.GetFormEntries(form).LastOrDefault();
                Assert.IsNull(formEntry, "Form entry has been submitted even when the form is not valid.");
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Pages().DeleteAllPages();
                FormsModuleCodeSnippets.DeleteForm(formId);
            }
        }
예제 #28
0
        public void ResourcePackageLayoutFiles_DeleteLayoutFile_VerifyTemplateAndPageNotBasedToLayout()
        {
            int templatesCount = this.PageManager.GetTemplates().Count();

            try
            {
                FeatherServerOperations.ResourcePackages().AddNewResourcePackage(Constants.PackageResource);
                FeatherServerOperations.ResourcePackages().WaitForTemplatesCountToIncrease(templatesCount, 3);

                var template = this.PageManager.GetTemplates().Where(t => t.Title == Constants.TemplateTestLayout1).FirstOrDefault();

                if (template == null)
                {
                    throw new ArgumentException("template not found");
                }

                Guid pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(template, Constants.PageTitle, Constants.PageUrl);

                var page    = this.PageManager.GetPageNode(pageId);
                var pageUrl = page.GetFullUrl();
                pageUrl = RouteHelper.GetAbsoluteUrl(pageUrl);

                var pageContent = WebRequestHelper.GetPageWebContent(pageUrl);
                Assert.IsTrue(pageContent.Contains(Constants.TestLayout1TemplateText), "Layout template text was not found in the page content");

                string filePath = FeatherServerOperations.ResourcePackages().GetResourcePackageDestinationFilePath(Constants.TestPackageName, Constants.TestLayoutFileName);
                File.Delete(filePath);

                template = this.PageManager.GetTemplates().Where(t => t.Title == Constants.TemplateTestLayout1).FirstOrDefault();
                Assert.IsNotNull(template, "Template was not found after layout file was deleted.");

                this.PublishPage(page);
                pageContent = WebRequestHelper.GetPageWebContent(pageUrl);

                Assert.IsFalse(pageContent.Contains(Constants.ServerErrorMessage), "Page throws a server error message");
                Assert.IsFalse(pageContent.Contains(Constants.TestLayout1TemplateText), "Layout template text was found in the page content");
            }
            finally
            {
                string[] templates = new string[] { Constants.TemplateTestLayout1, Constants.TemplateTestLayout2, Constants.TemplateTestLayout3 };

                ServerOperations.Pages().DeletePage(Constants.PageTitle);

                foreach (var template in templates)
                {
                    ServerOperations.Templates().DeletePageTemplate(template);
                }

                string path = FeatherServerOperations.ResourcePackages().GetResourcePackagesDestination(Constants.TestPackageName);
                Directory.Delete(path, true);
            }
        }
예제 #29
0
        public void SetUp()
        {
            // Gets the template name from the arrangement context
            string templateName = ServerArrangementContext.GetCurrent().Values["templateName"];

            // Create a page with the corresponding template from the test - Bootstrap, Foundation or Semantic
            Guid templateId    = ServerOperations.Templates().GetTemplateIdByTitle(templateName);
            Guid navPageId     = ServerOperations.Pages().CreatePage(NavigationPage, templateId);
            Guid navPageNodeId = ServerOperations.Pages().GetPageNodeId(navPageId);

            // Adds navigation widget to the page
            FeatherServerOperations.Pages().AddMvcWidgetToPage(navPageNodeId, typeof(NavigationController).FullName, WidgetCaption, PlaceHolderId);
        }
예제 #30
0
        private void CreatePageWithTemplate(string templateName, string pageName, string pageUrl)
        {
            PageManager pageManager = PageManager.GetManager();

            var template = pageManager.GetTemplates().Where(t => t.Title == templateName).FirstOrDefault();

            if (template == null)
            {
                throw new ArgumentException("template is null");
            }

            FeatherServerOperations.Pages().CreatePageWithTemplate(template, pageName, pageUrl);
        }