public void CallIndexAction_WithoutParams_EnsureTheModelIsProperlyCreated()
        {
            // Arrange
            using (var controller = new SearchResultsController())
            {
                // Act
                var view = controller.Index(null);

                // Asserts
                Assert.IsNull(view, "No results are displayed.");
            }
        }
        public void SearchResultsWidget_DefaultLanguage_Limit_OldestOrder()
        {
            Guid searchIndex1Id = Guid.Empty;

            try
            {
                searchIndex1Id = SitefinityOperations.ServerOperations.Search().CreateSearchIndex(SearchResultsWidgetTests.SearchIndexName, new[] { SitefinityOperations.SearchContentType.Pages, SitefinityOperations.SearchContentType.News });
                SitefinityOperations.ServerOperations.Search().Reindex(searchIndex1Id);

                int index = 1;
                string testName = System.Reflection.MethodInfo.GetCurrentMethod().Name;
                string pageNamePrefix = testName + "NewsPage" + index;
                string pageTitlePrefix = testName + "NewsPage" + index;
                string urlNamePrefix = testName + "news-page" + index;

                string orderBy = "Oldest";
                var searchResultsController = new SearchResultsController();
                searchResultsController.Model.DisplayMode = Telerik.Sitefinity.Frontend.Search.Mvc.Models.ListDisplayMode.Limit;
                searchResultsController.Model.ItemsPerPage = 2;
                int expectedResultsCount = 2;

                var mvcProxy = new MvcControllerProxy();
                mvcProxy.ControllerName = typeof(NewsController).FullName;
                var newsController = new NewsController();
                mvcProxy.Settings = new ControllerSettings(newsController);

                this.pageOperations.CreatePageWithControl(mvcProxy, pageNamePrefix, pageTitlePrefix, urlNamePrefix, index);

                searchResultsController.Index(null, SearchResultsWidgetTests.NewsTitle, SearchResultsWidgetTests.SearchIndexName, null, null, orderBy);

                //// ignored because total count of returned results is 5 instead of 2
                Assert.AreEqual(expectedResultsCount, searchResultsController.Model.Results.TotalCount);
                Assert.AreEqual(SearchResultsWidgetTests.NewsTitle + "1", searchResultsController.Model.Results.Data[0].GetValue("Title"));
                Assert.AreEqual(SearchResultsWidgetTests.NewsTitle + "2", searchResultsController.Model.Results.Data[1].GetValue("Title"));
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Search().DeleteAllIndexes();
            }
        }
        public void CallResultsAction_WithoutParams_EnsureTheModelIsProperlyCreated()
        {
            using (new ObjectFactoryContainerRegion())
            {
                ObjectFactory.Container.RegisterType<ConfigManager, ConfigManager>(typeof(XmlConfigProvider).Name.ToUpperInvariant(), new InjectionConstructor(typeof(XmlConfigProvider).Name));
                ObjectFactory.Container.RegisterType<XmlConfigProvider, DummyConfigProvider>();
                ObjectFactory.Container.RegisterType<IRelatedDataResolver, DummyRelatedDataResolver>();
                ObjectFactory.Container.RegisterType<IModuleBuilderProxy, DummyModuleBuilderProxy>();
                Config.RegisterSection<ResourcesConfig>();
                Config.RegisterSection<SearchConfig>();
                Config.RegisterSection<ProjectConfig>();

                // Arrange
                using (var controller = new SearchResultsController())
                {
                    var context =
                    new HttpContextWrapper(
                        new HttpContext(
                            new HttpRequest(null, "http://tempuri.org", "package=testPackageName"),
                            new HttpResponse(null)));

                    // Act
                    JsonResult jsonResult = null;
                    SystemManager.RunWithHttpContext(context, () => { jsonResult = controller.Results() as JsonResult; });

                    // Asserts
                    Assert.IsNotNull(jsonResult, "No results are displayed.");
                    var resultModel = jsonResult.Data as ResultModel;
                    Assert.AreEqual(0, resultModel.TotalCount, "No items are found");
                    Assert.AreEqual(0, resultModel.Data.Count, "The results collection is empty");
                }
            }
        }
        public void SearchResultsWidget_NonDefaultLanguage_ResultsFound_OldestOrder()
        {
            Guid searchIndex1Id = Guid.Empty;
            try
            {
                searchIndex1Id = SitefinityOperations.ServerOperations.Search().CreateSearchIndex(SearchResultsWidgetTests.SearchIndexName, new[] { SitefinityOperations.SearchContentType.Pages, SitefinityOperations.SearchContentType.News });
                SitefinityOperations.ServerOperations.Search().Reindex(searchIndex1Id);

                int index = 1;
                string testName = System.Reflection.MethodInfo.GetCurrentMethod().Name;
                string pageNamePrefix = testName + "NewsPage" + index;
                string pageTitlePrefix = testName + "NewsPage" + index;
                string urlNamePrefix = testName + "news-page" + index;

                var frontEndLanguages = AppSettings.CurrentSettings.DefinedFrontendLanguages;
                var language = frontEndLanguages[2].Name;
                string orderBy = "Oldest";
                var searchResultsController = new SearchResultsController();

                var mvcProxy = new MvcControllerProxy();
                mvcProxy.ControllerName = typeof(NewsController).FullName;
                var newsController = new NewsController();
                mvcProxy.Settings = new ControllerSettings(newsController);

                this.pageOperations.CreatePageWithControl(mvcProxy, pageNamePrefix, pageTitlePrefix, urlNamePrefix, index);

                searchResultsController.Index(null, SearchResultsWidgetTests.NewsTitle, SearchResultsWidgetTests.SearchIndexName, null, language, orderBy);

                Assert.AreEqual(1, searchResultsController.Model.Results.TotalCount);
                Assert.AreEqual(SearchResultsWidgetTests.NewsTitle + "20", searchResultsController.Model.Results.Data[0].GetValue("Title"));
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Search().DeleteAllIndexes();
            }
        }
        public void SearchResultsWidget_DefaultLanguage_NoResultsFound()
        {
            Guid searchIndex1Id = Guid.Empty;
            try
            {
                searchIndex1Id = SitefinityOperations.ServerOperations.Search().CreateSearchIndex(SearchResultsWidgetTests.SearchIndexName, new[] { SitefinityOperations.SearchContentType.Pages, SitefinityOperations.SearchContentType.News });
                SitefinityOperations.ServerOperations.Search().Reindex(searchIndex1Id);

                int index = 1;
                string testName = System.Reflection.MethodInfo.GetCurrentMethod().Name;
                string pageNamePrefix = testName + "NewsPage" + index;
                string pageTitlePrefix = testName + "NewsPage" + index;
                string urlNamePrefix = testName + "news-page" + index;

                string orderBy = "Oldest";
                string searchString = "TestEvents";
                int expectedCount = 0;
                var searchResultsController = new SearchResultsController();

                var mvcProxy = new MvcControllerProxy();
                mvcProxy.ControllerName = typeof(NewsController).FullName;
                var newsController = new NewsController();
                mvcProxy.Settings = new ControllerSettings(newsController);

                this.pageOperations.CreatePageWithControl(mvcProxy, pageNamePrefix, pageTitlePrefix, urlNamePrefix, index);

                searchResultsController.Index(null, searchString, SearchResultsWidgetTests.SearchIndexName, null, null, orderBy);

                Assert.AreEqual(expectedCount, searchResultsController.Model.Results.TotalCount);
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Search().DeleteAllIndexes();
            }
        }
        public void SearchResultsWidget_DefaultLanguage_NoLimit_NewestOrder()
        {
            Guid searchIndex1Id = Guid.Empty;
            try
            {
                searchIndex1Id = SitefinityOperations.ServerOperations.Search().CreateSearchIndex(SearchResultsWidgetTests.SearchIndexName, new[] { SitefinityOperations.SearchContentType.News });
                SitefinityOperations.ServerOperations.Search().Reindex(searchIndex1Id);

                int index = 1;
                string testName = System.Reflection.MethodInfo.GetCurrentMethod().Name;
                string pageNamePrefix = testName + "NewsPage" + index;
                string pageTitlePrefix = testName + "NewsPage" + index;
                string urlNamePrefix = testName + "news-page" + index;

                string orderBy = "Newest";
                var searchResultsController = new SearchResultsController();
                searchResultsController.Model.DisplayMode = Telerik.Sitefinity.Frontend.Search.Mvc.Models.ListDisplayMode.All;
                searchResultsController.Model.ItemsPerPage = 2;

                var mvcProxy = new MvcControllerProxy();
                mvcProxy.ControllerName = typeof(NewsController).FullName;
                var newsController = new NewsController();
                mvcProxy.Settings = new ControllerSettings(newsController);

                this.pageOperations.CreatePageWithControl(mvcProxy, pageNamePrefix, pageTitlePrefix, urlNamePrefix, index);

                searchResultsController.Index(null, SearchResultsWidgetTests.NewsTitle, SearchResultsWidgetTests.SearchIndexName, null, this.frontEndLanguages[0].Name, orderBy);

                Assert.AreEqual(SearchResultsWidgetTests.NewsCount, searchResultsController.Model.Results.TotalCount);
                for (int i = 0; i < SearchResultsWidgetTests.NewsCount; i++)
                {
                    Assert.AreEqual(SearchResultsWidgetTests.NewsTitle + (SearchResultsWidgetTests.NewsCount - i), searchResultsController.Model.Results.Data[i].GetValue("Title"));
                }
            }
            finally
            {
                Telerik.Sitefinity.TestUtilities.CommonOperations.ServerOperations.Search().DeleteAllIndexes();
            }
        }