예제 #1
0
        public void DynamicWidgets_ChildWidget_DisplayHotelsFromCurrentlyOpenedCityWithoutCityWidget()
        {
            string hotelSuff;
            string citySuff;
            string url;
            string responseContent;

            try
            {
                var hotelsWidget = this.CreateMvcWidget(ResolveTypeHotel, WidgetNameHotels, ParentFilterMode.CurrentlyOpen, ResolveTypeCity);
                var controls     = new List <System.Web.UI.Control>();
                controls.Add(hotelsWidget);

                PageContentGenerator.AddControlsToPage(this.pageId, controls);

                for (int i = 1; i <= 3; i++)
                {
                    citySuff        = i.ToString(CultureInfo.InvariantCulture);
                    url             = UrlPath.ResolveAbsoluteUrl("~/" + PageName + "/country1/country1city" + citySuff);
                    responseContent = PageInvoker.ExecuteWebRequest(url);

                    for (int j = 1; j <= 3; j++)
                    {
                        hotelSuff = j.ToString(CultureInfo.InvariantCulture);
                        Assert.IsTrue(responseContent.Contains("Country1City" + citySuff + "Hotel" + hotelSuff), "The dynamic item with this title was NOT found: Country1City" + citySuff + "Hotel" + hotelSuff);
                    }
                }
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
            }
        }
        public void BlogsWidget_DisplayBlogsWithMoreThan_0_Posts()
        {
            string blog1Title     = "Blog1";
            string blog2Title     = "Blog2";
            string pageTitle      = "PageWithBlogsWidget";
            string blog1PostTitle = "Blog1_PublishedPost";

            try
            {
                Guid blog1Id = ServerOperations.Blogs().CreateBlog(blog1Title);
                ServerOperations.Blogs().CreatePublishedBlogPost(blog1PostTitle, blog1Id);

                ServerOperations.Blogs().CreateBlog(blog2Title);

                Guid pageId = ServerOperations.Pages().CreatePage(pageTitle);

                var blogsWidget = this.CreateBlogsMvcWidgetFilteredSelectionMode(FilteredSelectionMode.MinPostsCount, minPostsCount: 0, maxPostsAge: 1);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(blogsWidget);

                PageContentGenerator.AddControlsToPage(pageId, controls);

                string url             = UrlPath.ResolveAbsoluteUrl("~/" + pageTitle);
                string responseContent = PageInvoker.ExecuteWebRequest(url);

                Assert.IsTrue(responseContent.Contains(blog1Title), "The item with this title was NOT found " + blog1Title);
                Assert.IsFalse(responseContent.Contains(blog2Title), "The item with this title WAS found " + blog2Title);
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Blogs().DeleteAllBlogs();
            }
        }
예제 #3
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);
        }
        public void BlogsWidget_UseLimit_OneItem()
        {
            string blog1Title = "Blog1";
            string blog2Title = "Blog2";
            string pageTitle  = "PageWithBlogsWidget";

            try
            {
                ServerOperations.Blogs().CreateBlog(blog1Title);
                ServerOperations.Blogs().CreateBlog(blog2Title);

                Guid pageId = ServerOperations.Pages().CreatePage(pageTitle);

                var blogsWidget = this.CreateBlogsMvcWidget(ListDisplayMode.Limit, itemsPerPage: 1);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(blogsWidget);

                PageContentGenerator.AddControlsToPage(pageId, controls);

                string url             = UrlPath.ResolveAbsoluteUrl("~/" + pageTitle);
                string responseContent = PageInvoker.ExecuteWebRequest(url);

                Assert.IsTrue(responseContent.Contains(blog2Title), "The item with this title was NOT found " + blog2Title);
                Assert.IsFalse(responseContent.Contains(blog1Title), "The item with this title WAS found " + blog1Title);
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Blogs().DeleteAllBlogs();
            }
        }
예제 #5
0
        public void DynamicWidgets_ContentLocationService_VerifyDynamicItemLocationOnMoreThanOnePage()
        {
            int expectedLocationsCount;
            var page2Name = PageName + "2";

            try
            {
                var  countryId   = ServerOperationsFeather.DynamicModuleBooking().CreateCountry(CountryName);
                Type countryType = TypeResolutionService.ResolveType(ResolveTypeCountry);

                DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();

                var page1Id = ServerOperations.Pages().CreatePage(PageName);
                var page2Id = ServerOperations.Pages().CreatePage(page2Name);

                var countriesWidget = this.CreateMvcWidget(ResolveTypeCountry, WidgetNameCountries);
                var controls        = new List <System.Web.UI.Control>();
                controls.Add(countriesWidget);

                PageContentGenerator.AddControlsToPage(page1Id, controls);
                PageContentGenerator.AddControlsToPage(page2Id, controls);

                var locationsService     = SystemManager.GetContentLocationService();
                var dynamicItemLocations = locationsService.GetItemLocations(countryType, dynamicModuleManager.Provider.Name, countryId);

                expectedLocationsCount = 2;

                Assert.AreEqual(expectedLocationsCount, dynamicItemLocations.Count(), "Unexpected locations count");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperationsFeather.DynamicModuleBooking().DeleteCountry(CountryName);
            }
        }
예제 #6
0
        public void BlogPostsWidget_DisplaySelectedBlogPosts()
        {
            string blogTitle      = "Blog";
            string blogPost1Title = "BlogPost1";
            string blogPost2Title = "BlogPost2";
            string pageTitle      = "PageWithBlogPostsWidget";

            try
            {
                Guid blogId  = ServerOperations.Blogs().CreateBlog(blogTitle);
                Guid post1Id = ServerOperations.Blogs().CreatePublishedBlogPost(blogPost1Title, blogId);

                Guid pageId = ServerOperations.Pages().CreatePage(pageTitle);

                var blogPostsWidget = this.CreateBlogPostsMvcWidget(default(Guid), ParentFilterMode.All, SelectionMode.SelectedItems, post1Id);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(blogPostsWidget);

                PageContentGenerator.AddControlsToPage(pageId, controls);

                string url             = UrlPath.ResolveAbsoluteUrl("~/" + pageTitle);
                string responseContent = PageInvoker.ExecuteWebRequest(url);

                Assert.IsTrue(responseContent.Contains(blogPost1Title), "The item with this title was NOT found " + blogPost1Title);
                Assert.IsFalse(responseContent.Contains(blogPost2Title), "The item with this title WAS found " + blogPost2Title);
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Blogs().DeleteAllBlogs();
            }
        }
예제 #7
0
        public void LanguageSelectorWidgetAndProductList_CurrentLanguageIncluded()
        {
            var languageSelectorControl = this.CreateLanguageSelectorControl();
            var languageSelectorModel   = languageSelectorControl.Settings.Controller.Model;

            languageSelectorControl.Settings.Controller.TemplateName = "DropDownMenu";
            languageSelectorModel.IncludeCurrentLanguage             = true;
            this.productOperations.CreatePublishedProduct(ProductTypeName, true, ProductName, ProductPrice);

            var controls = new List <System.Web.UI.Control>();

            controls.Add(languageSelectorControl);

            var pageLanguages = new[]
            {
                this.sitefinityLanguages["English"]
            };

            var createdPages = this.CreateLocalizedPage(PageName, pageLanguages);

            // Add language selector widget to the en-US page
            var currentPage = createdPages.First();

            PageContentGenerator.AddControlsToPage(currentPage.Key, controls);
            ServerOperations.Widgets().AddProductListViewWithTemplate(currentPage.Key, EcommerceGlobals.placeholderId, EcommerceGlobals.captionProducts, ControlTypes.ProductDetailLayoutTemplateName, showWishlist: true);

            string url         = UrlPath.ResolveAbsoluteUrl("~/" + PageName + currentPage.Value.Name);
            var    pageContent = PageInvoker.ExecuteWebRequest(url);

            Assert.IsNotNull(pageContent);
        }
예제 #8
0
        public void DynamicWidgets_HierarchicalWidgetsOnPage_DisplayHotelsFromCurrentlyOpenedCity()
        {
            string url;
            string responseContent;
            string suff;

            try
            {
                var countriesWidget = this.CreateMvcWidget(ResolveTypeCountry, WidgetNameCountries);
                var citiesWidget    = this.CreateMvcWidget(ResolveTypeCity, WidgetNameCities, ParentFilterMode.CurrentlyOpen, ResolveTypeCountry);
                var hotelsWidget    = this.CreateMvcWidget(ResolveTypeHotel, WidgetNameHotels, ParentFilterMode.CurrentlyOpen, ResolveTypeCity);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(countriesWidget);
                controls.Add(citiesWidget);
                controls.Add(hotelsWidget);

                PageContentGenerator.AddControlsToPage(this.pageId, controls);

                url             = UrlPath.ResolveAbsoluteUrl("~/" + PageName + "/country1/country1city1");
                responseContent = PageInvoker.ExecuteWebRequest(url);

                for (int i = 1; i <= 3; i++)
                {
                    suff = i.ToString(CultureInfo.InvariantCulture);

                    Assert.IsTrue(responseContent.Contains("Country1City1Hotel" + suff), "The dynamic item with this title was NOT found: Country1City1Hotel" + suff);
                    Assert.IsFalse(responseContent.Contains("Country1City2Hotel" + suff), "The dynamic item with this title was found: Country1City2Hotel" + suff);
                    Assert.IsFalse(responseContent.Contains("Country1City3Hotel" + suff), "The dynamic item with this title was found: Country1City3Hotel" + suff);
                }

                url             = UrlPath.ResolveAbsoluteUrl("~/" + PageName + "/country1/country1city2");
                responseContent = PageInvoker.ExecuteWebRequest(url);

                for (int i = 1; i <= 3; i++)
                {
                    suff = i.ToString(CultureInfo.InvariantCulture);

                    Assert.IsTrue(responseContent.Contains("Country1City2Hotel" + suff), "The dynamic item with this title was NOT found: Country1City2Hotel" + suff);
                    Assert.IsFalse(responseContent.Contains("Country1City1Hotel" + suff), "The dynamic item with this title was found: Country1City1Hotel" + suff);
                    Assert.IsFalse(responseContent.Contains("Country1City3Hotel" + suff), "The dynamic item with this title was found: Country1City3Hotel" + suff);
                }

                url             = UrlPath.ResolveAbsoluteUrl("~/" + PageName + "/country2/country2city2");
                responseContent = PageInvoker.ExecuteWebRequest(url);

                for (int i = 1; i <= 3; i++)
                {
                    suff = i.ToString(CultureInfo.InvariantCulture);

                    Assert.IsFalse(responseContent.Contains("Country2City1Hotel" + suff), "The dynamic item with this title was found: Country2City1Hotel" + suff);
                    Assert.IsTrue(responseContent.Contains("Country2City2Hotel" + suff), "The dynamic item with this title was NOT found: Country2City2Hotel" + suff);
                    Assert.IsFalse(responseContent.Contains("Country2City3Hotel" + suff), "The dynamic item with this title was found: Country2City3Hotel" + suff);
                }
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
            }
        }
예제 #9
0
        public void DynamicWidgets_ParentRelationType_DisplayRelatedItemsOnFrontend()
        {
            string url;
            string responseContent;
            string expectedContent;
            string pageName = "FeatherPage";
            string pageUrl  = "featherpage";
            string item1    = "item1";
            string item2    = "item2";

            foreach (var color in this.colors)
            {
                ServerOperationsFeather.DynamicModule1Operations().CreateColor(color);
            }

            try
            {
                string[] item1RelatedColors = new string[] { this.colors[0], this.colors[1] };

                ServerOperationsFeather.DynamicModule2Operations().CreateItem(item1, item1RelatedColors);

                string[] item2RelatedColors = new string[] { this.colors[2], this.colors[3] };

                ServerOperationsFeather.DynamicModule2Operations().CreateItem(item2, item2RelatedColors);

                this.pageId = ServerOperations.Pages().CreatePage(pageName);

                var itemsWidget  = this.CreateMvcWidget(ResolveTypeItem, WidgetNameItem, RelatedFieldName, ResolveTypeColor, RelationDirection.Parent);
                var colorsWidget = this.CreateMvcWidget(ResolveTypeColor, WidgetNameColor);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(itemsWidget);
                controls.Add(colorsWidget);

                PageContentGenerator.AddControlsToPage(this.pageId, controls);

                url             = UrlPath.ResolveAbsoluteUrl("~/" + pageUrl + "/" + this.colors[0]);
                responseContent = PageInvoker.ExecuteWebRequest(url);

                expectedContent = UrlPath.ResolveAbsoluteUrl("~/" + pageUrl + "/" + item1);
                Assert.IsTrue(this.ContainsElement(responseContent, expectedContent), "Link to " + item1 + " was not found on the frontend");

                expectedContent = UrlPath.ResolveAbsoluteUrl("~/" + pageUrl + "/" + item2);
                Assert.IsFalse(this.ContainsElement(responseContent, expectedContent), "Link to " + item2 + " was found on the frontend, but it shouldn't");

                url             = UrlPath.ResolveAbsoluteUrl("~/" + pageUrl + "/" + this.colors[3]);
                responseContent = PageInvoker.ExecuteWebRequest(url);

                expectedContent = UrlPath.ResolveAbsoluteUrl("~/" + pageUrl + "/" + item2);
                Assert.IsTrue(this.ContainsElement(responseContent, expectedContent), "Link to " + item2 + " was not found on the frontend");

                expectedContent = UrlPath.ResolveAbsoluteUrl("~/" + pageUrl + "/" + item1);
                Assert.IsFalse(this.ContainsElement(responseContent, expectedContent), "Link to " + item1 + " was found on the frontend, but it shouldn't");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
            }
        }
예제 #10
0
        public void BlogsWidget_SortBlogs_ByTitle_ZA()
        {
            string blog1Title     = "A_Blog";
            string blog2Title     = "Z_Blog";
            string blog3Title     = "B_Blog";
            string pageTitle      = "PageWithBlogsWidget";
            string sortExpression = "Title DESC";
            int    limitCount     = 1;
            Guid   pageId         = Guid.Empty;
            Guid   blog1Id        = Guid.Empty;
            Guid   blog2Id        = Guid.Empty;
            Guid   blog3Id        = Guid.Empty;

            try
            {
                blog1Id = ServerOperations.Blogs().CreateBlog(blog1Title);
                blog2Id = ServerOperations.Blogs().CreateBlog(blog2Title);
                blog3Id = ServerOperations.Blogs().CreateBlog(blog3Title);
                pageId  = ServerOperations.Pages().CreatePage(pageTitle);

                var blogsWidget = this.CreateBlogsMvcWidget(ListDisplayMode.Limit, limitCount, sortExpression);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(blogsWidget);

                PageContentGenerator.AddControlsToPage(pageId, controls);

                string url             = UrlPath.ResolveAbsoluteUrl("~/" + pageTitle);
                string responseContent = PageInvoker.ExecuteWebRequest(url);

                Assert.IsTrue(responseContent.Contains(blog2Title), "The item with this title was NOT found " + blog2Title);
                Assert.IsFalse(responseContent.Contains(blog3Title), "The item with this title WAS found " + blog3Title);
            }
            finally
            {
                if (pageId != Guid.Empty)
                {
                    ServerOperations.Pages().DeletePage(pageId);
                }

                if (blog1Id != Guid.Empty)
                {
                    ServerOperations.Blogs().DeleteBlog(blog1Id);
                }

                if (blog2Id != Guid.Empty)
                {
                    ServerOperations.Blogs().DeleteBlog(blog2Id);
                }

                if (blog3Id != Guid.Empty)
                {
                    ServerOperations.Blogs().DeleteBlog(blog3Id);
                }
            }
        }
예제 #11
0
        public void LanguageSelectorWidget_DetailsViewOfNewsItemWithENTranslationOnly()
        {
            var languageSelectorControl = this.CreateLanguageSelectorControl();
            var languageSelectorModel   = languageSelectorControl.Settings.Controller.Model;

            languageSelectorModel.IncludeCurrentLanguage = true;

            var controls = new List <System.Web.UI.Control>();

            controls.Add(languageSelectorControl);

            this.serverOperationsNews.CreateNewsItem("TestNewsItem");
            var newsControl = this.CreateNewsControl();

            controls.Add(newsControl);

            var pageLanguages = new[]
            {
                this.sitefinityLanguages["English"],
                this.sitefinityLanguages["Turkish"]
            };

            var createdPages = this.CreateLocalizedPage(PageName, pageLanguages);

            // Add language selector widget to the en-US page
            var currentPage = createdPages.First();

            PageContentGenerator.AddControlsToPage(currentPage.Key, controls);

            var items = newsControl.Settings.Controller.Model.CreateListViewModel(null, 1).Items.ToArray();
            var expectedDetailNews = (NewsItem)items[0].DataItem;

            string url           = UrlPath.ResolveAbsoluteUrl("~/" + PageName + currentPage.Value.Name);
            string detailNewsUrl = url + expectedDetailNews.ItemDefaultUrl;

            var pageContent = PageInvoker.ExecuteWebRequest(detailNewsUrl);

            Assert.IsNotNull(pageContent);

            var expectedLinks = new Dictionary <CultureInfo, string>()
            {
                { this.sitefinityLanguages["English"], this.GetPageUrl(PageName, this.sitefinityLanguages["English"], true) + expectedDetailNews.ItemDefaultUrl },
                { this.sitefinityLanguages["Turkish"], this.GetPageUrl(PageName, this.sitefinityLanguages["Turkish"]) }
            };

            var notExpectedLinks = new Dictionary <CultureInfo, string>()
            {
                { this.sitefinityLanguages["Arabic"], this.GetPageUrl(PageName, this.sitefinityLanguages["Arabic"]) },
                { this.sitefinityLanguages["Serbian"], this.GetPageUrl(PageName, this.sitefinityLanguages["Serbian"]) },
                { this.sitefinityLanguages["Bulgarian"], this.GetPageUrl(PageName, this.sitefinityLanguages["Bulgarian"]) },
                { this.sitefinityLanguages["French"], this.GetPageUrl(PageName, this.sitefinityLanguages["French"]) },
                { this.sitefinityLanguages["German"], this.GetPageUrl(PageName, this.sitefinityLanguages["German"]) }
            };

            this.AssertLanguageLinks(pageContent, expectedLinks, notExpectedLinks);
        }
예제 #12
0
        public void BlogsWidget_UsePaging_OneItemPerPage()
        {
            string blog1Title      = "Blog1";
            string blog2Title      = "Blog2";
            string pageTitle       = "PageWithBlogsWidget";
            int    firstPageIndex  = 1;
            int    secondPageIndex = 2;
            Guid   pageId          = Guid.Empty;
            Guid   blog1Id         = Guid.Empty;
            Guid   blog2Id         = Guid.Empty;

            try
            {
                blog1Id = ServerOperations.Blogs().CreateBlog(blog1Title);
                blog2Id = ServerOperations.Blogs().CreateBlog(blog2Title);
                pageId  = ServerOperations.Pages().CreatePage(pageTitle);

                var blogsWidget = this.CreateBlogsMvcWidget(ListDisplayMode.Paging, itemsCount: 1);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(blogsWidget);

                PageContentGenerator.AddControlsToPage(pageId, controls);

                string url             = UrlPath.ResolveAbsoluteUrl("~/" + pageTitle + "/" + firstPageIndex);
                string responseContent = PageInvoker.ExecuteWebRequest(url);

                Assert.IsTrue(responseContent.Contains(blog2Title), "The item with this title was NOT found " + blog2Title);
                Assert.IsFalse(responseContent.Contains(blog1Title), "The item with this title WAS found " + blog1Title);

                url             = UrlPath.ResolveAbsoluteUrl("~/" + pageTitle + "/" + secondPageIndex);
                responseContent = PageInvoker.ExecuteWebRequest(url);

                Assert.IsTrue(responseContent.Contains(blog1Title), "The item with this title was NOT found " + blog1Title);
                Assert.IsFalse(responseContent.Contains(blog2Title), "The item with this title WAS found " + blog2Title);
            }
            finally
            {
                if (pageId != Guid.Empty)
                {
                    ServerOperations.Pages().DeletePage(pageId);
                }

                if (blog1Id != Guid.Empty)
                {
                    ServerOperations.Blogs().DeleteBlog(blog1Id);
                }

                if (blog2Id != Guid.Empty)
                {
                    ServerOperations.Blogs().DeleteBlog(blog2Id);
                }
            }
        }
예제 #13
0
        public void Breadcrumb_DynamicWidget_VirtualNodes()
        {
            string dynamicTitle = "dynamic type title";
            string dynamicUrl   = "dynamic type title";

            ServerOperationsFeather.DynamicModules().EnsureModuleIsImported(ModuleName, ModuleResource);
            ServerOperationsFeather.DynamicModulePressArticle().CreatePressArticleItem(dynamicTitle, dynamicUrl);
            var dynamicCollection = ServerOperationsFeather.DynamicModulePressArticle().RetrieveCollectionOfPressArticles();

            string testName        = System.Reflection.MethodInfo.GetCurrentMethod().Name;
            string pageNamePrefix  = testName + "DynamicPage";
            string pageTitlePrefix = testName + "Dynamic Page";
            string urlNamePrefix   = testName + "dynamic-page";
            int    pageIndex       = 1;
            string pageTitle       = pageTitlePrefix + pageIndex;
            Guid   pageId          = Guid.Empty;
            string pageUrl         = UrlPath.ResolveAbsoluteUrl("~/" + urlNamePrefix + pageIndex);

            try
            {
                var mvcBreadcrumbWidget = this.CreateBreadcrumbMvcWidget();
                pageId = this.pageOperations.CreatePageWithControl(mvcBreadcrumbWidget, pageNamePrefix, pageTitlePrefix, urlNamePrefix, pageIndex);

                var mvcProxy = this.CreateDynamicMvcWidget();
                PageContentGenerator.AddControlsToPage(pageId, new List <System.Web.UI.Control>()
                {
                    mvcProxy
                });

                string detailsUrl      = pageUrl + dynamicCollection[0].ItemDefaultUrl;
                string responseContent = PageInvoker.ExecuteWebRequest(detailsUrl);

                string relativeUrl        = UrlPath.ResolveUrl("~/" + urlNamePrefix + pageIndex);
                string breadcrumbTemplate = @"<a[\w\s]{1,}href=(?<url>""/""|""" + relativeUrl + @""")>" + pageTitle + @"[\w\s]{1,}</a>[\w\s]{1,}<span>[\w\s]{1,}/[\w\s]{1,}</span>[\w\s]{1,}" + dynamicTitle;
                Match  match = Regex.Match(responseContent, breadcrumbTemplate, RegexOptions.IgnorePatternWhitespace & RegexOptions.Multiline);

                Assert.IsTrue(match.Success, "Breadcrumb does not contain selected dynamic item as virtual node!");
            }
            finally
            {
                if (pageId != Guid.Empty)
                {
                    CommonOperationsContext.ServerOperations.Pages().DeletePage(pageId);
                }

                ServerOperationsFeather.DynamicModulePressArticle().DeleteDynamicItems(dynamicCollection);
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.ModuleBuilder().DeleteAllModules(string.Empty, TransactionName);
            }
        }
예제 #14
0
        public Guid CreatePageWithControl(Control control, string pageNamePrefix, string pageTitlePrefix, string urlNamePrefix, int index)
        {
            var controls = new List <System.Web.UI.Control>();

            controls.Add(control);

            this.locationGenerator = new PageContentGenerator();
            var pageId = this.locationGenerator.CreatePage(
                string.Format(CultureInfo.InvariantCulture, "{0}{1}", pageNamePrefix, index.ToString(CultureInfo.InvariantCulture)),
                string.Format(CultureInfo.InvariantCulture, "{0}{1}", pageTitlePrefix, index.ToString(CultureInfo.InvariantCulture)),
                string.Format(CultureInfo.InvariantCulture, "{0}{1}", urlNamePrefix, index.ToString(CultureInfo.InvariantCulture)));

            PageContentGenerator.AddControlsToPage(pageId, controls);

            return(pageId);
        }
예제 #15
0
        public void DynamicWidgets_ContentLocationService_MultipleItemsSelectedFromWidget()
        {
            int expectedLocationsCount;

            try
            {
                for (int i = 1; i <= 3; i++)
                {
                    ServerOperationsFeather.DynamicModuleBooking().CreateCountry(CountryName + i.ToString(CultureInfo.InvariantCulture));
                }

                Type countryType = TypeResolutionService.ResolveType(ResolveTypeCountry);

                DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
                var countryItem1Id = dynamicModuleManager.GetDataItems(countryType).Where("Title = \"" + CountryName + "1\"").First().Id;
                var countryItem2Id = dynamicModuleManager.GetDataItems(countryType).Where("Title = \"" + CountryName + "2\"").First().Id;

                string[] itemIds = new string[] { countryItem1Id.ToString(), countryItem2Id.ToString() };

                var pageId = ServerOperations.Pages().CreatePage(PageName);

                var countriesWidget = this.CreateMvcWidget(ResolveTypeCountry, WidgetNameCountries, itemIds);
                var controls        = new List <System.Web.UI.Control>();
                controls.Add(countriesWidget);

                PageContentGenerator.AddControlsToPage(pageId, controls);

                var locationsService     = SystemManager.GetContentLocationService();
                var dynamicItemLocations = locationsService.GetItemLocations(countryType, dynamicModuleManager.Provider.Name, countryItem1Id);

                expectedLocationsCount = 1;

                Assert.AreEqual(expectedLocationsCount, dynamicItemLocations.Count(), "Unexpected locations count");

                dynamicItemLocations = locationsService.GetItemLocations(countryType, dynamicModuleManager.Provider.Name, countryItem2Id);
                Assert.AreEqual(expectedLocationsCount, dynamicItemLocations.Count(), "Unexpected locations count");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();

                for (int i = 1; i <= 3; i++)
                {
                    ServerOperationsFeather.DynamicModuleBooking().DeleteCountry(CountryName + i.ToString(CultureInfo.InvariantCulture));
                }
            }
        }
예제 #16
0
        public void LanguageSelectorWidget_CurrentLanguageIncluded()
        {
            var languageSelectorControl = this.CreateLanguageSelectorControl();
            var languageSelectorModel   = languageSelectorControl.Settings.Controller.Model;

            languageSelectorModel.IncludeCurrentLanguage = true;

            var controls = new List <System.Web.UI.Control>();

            controls.Add(languageSelectorControl);

            var pageLanguages = new[]
            {
                this.sitefinityLanguages["English"],
                this.sitefinityLanguages["Turkish"]
            };

            var createdPages = this.CreateLocalizedPage(PageName, pageLanguages);

            // Add language selector widget to the en-US page
            var currentPage = createdPages.First();

            PageContentGenerator.AddControlsToPage(currentPage.Key, controls);

            string url         = UrlPath.ResolveAbsoluteUrl("~/" + PageName + currentPage.Value.Name);
            var    pageContent = PageInvoker.ExecuteWebRequest(url);

            Assert.IsNotNull(pageContent);

            var expectedLinks = new Dictionary <CultureInfo, string>()
            {
                { this.sitefinityLanguages["English"], this.GetPageUrl(PageName, this.sitefinityLanguages["English"], true) },
                { this.sitefinityLanguages["Turkish"], this.GetPageUrl(PageName, this.sitefinityLanguages["Turkish"]) }
            };

            var notExpectedLinks = new Dictionary <CultureInfo, string>()
            {
                { this.sitefinityLanguages["Arabic"], this.GetPageUrl(PageName, this.sitefinityLanguages["Arabic"]) },
                { this.sitefinityLanguages["Serbian"], this.GetPageUrl(PageName, this.sitefinityLanguages["Serbian"]) },
                { this.sitefinityLanguages["Bulgarian"], this.GetPageUrl(PageName, this.sitefinityLanguages["Bulgarian"]) },
                { this.sitefinityLanguages["French"], this.GetPageUrl(PageName, this.sitefinityLanguages["French"]) },
                { this.sitefinityLanguages["German"], this.GetPageUrl(PageName, this.sitefinityLanguages["German"]) }
            };

            this.AssertLanguageLinks(pageContent, expectedLinks, notExpectedLinks);
        }
        private Guid CreatePageWithControl(PageTemplateFramework framework, out string pageUrl)
        {
            var pageId = this.CreatePage(framework, out pageUrl);

            var mvcProxy = new MvcControllerProxy();

            mvcProxy.ControllerName = typeof(ContentBlockController).FullName;

            var contentBlockController = new ContentBlockController();

            contentBlockController.Content = ModuleUnloadTests.PageControlContent;
            mvcProxy.Settings = new ControllerSettings(contentBlockController);

            PageContentGenerator.AddControlsToPage(pageId, new Control[] { mvcProxy }, framework == PageTemplateFramework.Mvc ? "Contentplaceholder1" : "Body");

            return(pageId);
        }
예제 #18
0
        public void Breadcrumb_DetailNewsItem_VirtualNodes()
        {
            Guid pageId = Guid.Empty;

            try
            {
                string testName        = System.Reflection.MethodInfo.GetCurrentMethod().Name;
                string pageNamePrefix  = testName + "NewsPage";
                string pageTitlePrefix = testName + "News Page";
                string urlNamePrefix   = testName + "news-page";
                int    pageIndex       = 1;
                string pageTitle       = pageTitlePrefix + pageIndex;
                string pageUrl         = UrlPath.ResolveAbsoluteUrl("~/" + urlNamePrefix + pageIndex);

                var mvcBreadcrumbWidget = this.CreateBreadcrumbMvcWidget();
                pageId = this.pageOperations.CreatePageWithControl(mvcBreadcrumbWidget, pageNamePrefix, pageTitlePrefix, urlNamePrefix, pageIndex);

                var newsMvcWidget = this.CreateNewsMvcWidget();
                PageContentGenerator.AddControlsToPage(pageId, new List <System.Web.UI.Control>()
                {
                    newsMvcWidget
                });

                CommonOperationsContext.ServerOperations.News().CreatePublishedNewsItem(newsTitle: NewsTitle, newsContent: NewsTitle);
                var    items              = ((NewsController)newsMvcWidget.Controller).Model.CreateListViewModel(null, 1).Items.ToArray();
                var    newsItem           = (NewsItem)items[0].DataItem;
                string detailNewsUrl      = pageUrl + newsItem.ItemDefaultUrl;
                var    responseContent    = PageInvoker.ExecuteWebRequest(detailNewsUrl);
                string relativeUrl        = UrlPath.ResolveUrl("~/" + urlNamePrefix + pageIndex);
                string breadcrumbTemplate = @"<a[\w\s]{1,}href=(?<url>""/""|""" + relativeUrl + @""")>" + pageTitle + @"[\w\s]{1,}</a>[\w\s]{1,}<span>[\w\s]{1,}/[\w\s]{1,}</span>[\w\s]{1,}" + NewsTitle;

                Match match = Regex.Match(responseContent, breadcrumbTemplate, RegexOptions.IgnorePatternWhitespace & RegexOptions.Multiline);

                Assert.IsTrue(match.Success, "Breadcrumb does not contain selected news item as virtual node!");
            }
            finally
            {
                if (pageId != Guid.Empty)
                {
                    CommonOperationsContext.ServerOperations.Pages().DeletePage(pageId);
                }

                CommonOperationsContext.ServerOperations.News().DeleteNewsItem(NewsTitle);
            }
        }
        public void BlogPostsWidget_NoLimitAndPaging()
        {
            string blog1Title = "Blog1";
            string post1Title = "Blog1Post1";
            string post2Title = "Blog1Post2";
            string pageTitle  = "PageWithBlogPostsWidget";
            Guid   pageId     = Guid.Empty;
            Guid   blog1Id    = Guid.Empty;

            try
            {
                blog1Id = ServerOperations.Blogs().CreateBlog(blog1Title);
                ServerOperations.Blogs().CreatePublishedBlogPost(post1Title, blog1Id);
                ServerOperations.Blogs().CreatePublishedBlogPost(post2Title, blog1Id);

                pageId = ServerOperations.Pages().CreatePage(pageTitle);

                var blogPostsWidget = this.CreateBlogPostsMvcWidget(ListDisplayMode.All, itemsCount: 1);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(blogPostsWidget);

                PageContentGenerator.AddControlsToPage(pageId, controls);

                string url             = UrlPath.ResolveAbsoluteUrl("~/" + pageTitle);
                string responseContent = PageInvoker.ExecuteWebRequest(url);

                Assert.IsTrue(responseContent.Contains(post2Title), "The item with this title was NOT found " + post2Title);
                Assert.IsTrue(responseContent.Contains(post1Title), "The item with this title was NOT found " + post1Title);
            }
            finally
            {
                if (pageId != Guid.Empty)
                {
                    ServerOperations.Pages().DeletePage(pageId);
                }

                if (blog1Id != Guid.Empty)
                {
                    ServerOperations.Blogs().DeleteBlog(blog1Id);
                }
            }
        }
예제 #20
0
        public void BlogPostsWidget_UsePaging_OneItemPerPage()
        {
            string blog1Title = "Blog1";
            string post1Title = "Blog1Post1";
            string post2Title = "Blog1Post2";
            string pageTitle  = "PageWithBlogPostsWidget";
            int    page1Index = 1;
            int    page2Index = 2;

            try
            {
                Guid blog1Id = ServerOperations.Blogs().CreateBlog(blog1Title);
                ServerOperations.Blogs().CreatePublishedBlogPost(post1Title, blog1Id);
                ServerOperations.Blogs().CreatePublishedBlogPost(post2Title, blog1Id);

                Guid pageId = ServerOperations.Pages().CreatePage(pageTitle);

                var blogPostsWidget = this.CreateBlogPostsMvcWidget(ListDisplayMode.Paging, itemsPerPage: 1);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(blogPostsWidget);

                PageContentGenerator.AddControlsToPage(pageId, controls);

                string url             = UrlPath.ResolveAbsoluteUrl("~/" + pageTitle + "/" + page1Index);
                string responseContent = PageInvoker.ExecuteWebRequest(url);

                Assert.IsTrue(responseContent.Contains(post2Title), "The item with this title was NOT found " + post2Title);
                Assert.IsFalse(responseContent.Contains(post1Title), "The item with this title WAS found " + post1Title);

                url             = UrlPath.ResolveAbsoluteUrl("~/" + pageTitle + "/" + page2Index);
                responseContent = PageInvoker.ExecuteWebRequest(url);

                Assert.IsTrue(responseContent.Contains(post1Title), "The item with this title was NOT found " + post1Title);
                Assert.IsFalse(responseContent.Contains(post2Title), "The item with this title WAS found " + post2Title);
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperations.Blogs().DeleteAllBlogs();
            }
        }
예제 #21
0
        public void DynamicWidgets_HierarchicalWidgetsOnPage_DisplayCitiesFromSelectedCountries()
        {
            try
            {
                var providerName = FeatherWidgets.TestUtilities.CommonOperations.DynamicModulesOperations.ProviderName;
                DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager(providerName);
                Type countryType = TypeResolutionService.ResolveType(ResolveTypeCountry);

                var countryItem  = dynamicModuleManager.GetDataItems(countryType).Where("Status = Master AND Title = \"Country2\"").First();
                var countryItem2 = dynamicModuleManager.GetDataItems(countryType).Where("Status = Master AND Title = \"Country3\"").First();

                string[] parentIds = new string[] { countryItem.Id.ToString(), countryItem2.Id.ToString() };

                var citiesWidget = this.CreateMvcWidget(ResolveTypeCity, WidgetNameCities, ParentFilterMode.Selected, ResolveTypeCountry, parentIds);

                var controls = new List <System.Web.UI.Control>();
                controls.Add(citiesWidget);

                PageContentGenerator.AddControlsToPage(this.pageId, controls);

                string url             = UrlPath.ResolveAbsoluteUrl("~/" + PageName);
                string responseContent = PageInvoker.ExecuteWebRequest(url);

                for (int i = 1; i <= 3; i++)
                {
                    string suff = i.ToString(CultureInfo.InvariantCulture);

                    Assert.IsTrue(responseContent.Contains("Country2City" + suff), "The dynamic item with this title was NOT found Country2City" + suff);
                    Assert.IsFalse(responseContent.Contains("Country1City" + suff), "The dynamic item with this title was found Country1City" + suff);
                    Assert.IsTrue(responseContent.Contains("Country3City" + suff), "The dynamic item with this title was NOT found Country3City" + suff);
                }
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
            }
        }
        public void DynamicWidgets_ContentLocationService_VerifyChildItemLocation()
        {
            int expectedLocationsCount;

            try
            {
                var countryId = ServerOperationsFeather.DynamicModuleBooking().CreateCountry(CountryName);

                string cityName = CountryName + CityName;

                var  cityId   = ServerOperationsFeather.DynamicModuleBooking().CreateCity(countryId, cityName);
                Type cityType = TypeResolutionService.ResolveType(ResolveTypeCity);

                DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager(FeatherWidgets.TestUtilities.CommonOperations.DynamicModulesOperations.ProviderName);

                var pageId = ServerOperations.Pages().CreatePage(PageName);

                var countriesWidget = this.CreateMvcWidget(ResolveTypeCity, WidgetNameCities);
                var controls        = new List <System.Web.UI.Control>();
                controls.Add(countriesWidget);

                PageContentGenerator.AddControlsToPage(pageId, controls);

                var locationsService     = SystemManager.GetContentLocationService();
                var dynamicItemLocations = locationsService.GetItemLocations(cityType, dynamicModuleManager.Provider.Name, cityId);

                expectedLocationsCount = 1;

                Assert.AreEqual(expectedLocationsCount, dynamicItemLocations.Count(), "Unexpected locations count");
            }
            finally
            {
                ServerOperations.Pages().DeleteAllPages();
                ServerOperationsFeather.DynamicModuleBooking().DeleteCountry(CountryName);
            }
        }