public void DFC5229ForSearchResultsShowingComputedSearchTerm(bool showComputedSearchTerm, bool useRawSearchTerm) { // Arrange var searchView = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); var model = new JobProfileSearchResultViewModel { SearchResults = new List <JobProfileSearchResultItemViewModel>(), ShowSearchedTerm = showComputedSearchTerm, ComputedSearchTerm = useRawSearchTerm ? " plumbing" : " plumbing /.*plumb.*/ plumb~" }; // Act var htmlDom = searchView.RenderAsHtml(model); // Asserts if (showComputedSearchTerm) { GetSearchComputedTermParagraph(htmlDom).Should().Be($"ComputedSearchTerm: {model.ComputedSearchTerm}"); } else { GetSearchComputedTermParagraph(htmlDom).Should().BeNullOrEmpty(); } }
public void DFC2047ForJobProfileSalaryRange(string salaryRange) { // Arrange var searchView = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); string salaryBlankText = "Vairable"; var jobProfileSearchResultsViewModel = GenerateDummyJobProfileSearchResultViewModel( 1, "next-url", "nextpage", "prev-url", "prevpage", 1, 1, DummyJobProfileSearchResultWithSalaryRange(salaryRange), "1 result found", "Test", salaryBlankText); // Act var htmlDom = searchView.RenderAsHtml(jobProfileSearchResultsViewModel); // Asserts var salaryRangeElement = htmlDom.DocumentNode.SelectNodes("//span[contains(@class, 'dfc-code-search-jpSalary')]").FirstOrDefault(); var salaryRangeText = salaryRangeElement?.InnerText?.Trim(); if (string.IsNullOrEmpty(salaryRange)) { salaryRangeText.Should().Be(salaryBlankText); } else { salaryRangeText.Should().Be(salaryRange); } }
public void DFC1494ForSearchResultsDidYouMeanTerm(string correctedSearchTerm, bool validSpellcheckResult) { // Arrange var searchView = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); var model = new JobProfileSearchResultViewModel { DidYouMeanUrl = new Uri(validSpellcheckResult ? $"{nameof(JobProfileSearchBoxController.SearchResultsPage)}?searchTerm={HttpUtility.UrlEncode(correctedSearchTerm)}" : string.Empty, UriKind.RelativeOrAbsolute), DidYouMeanTerm = validSpellcheckResult ? correctedSearchTerm : string.Empty, SearchResults = new List <JobProfileSearchResultItemViewModel>() }; // Act var htmlDom = searchView.RenderAsHtml(model); // Asserts if (validSpellcheckResult) { GetDidYouMeanText(htmlDom).Should().Be(model.DidYouMeanTerm); GetDidYouMeanUrl(htmlDom).Should().Be(model.DidYouMeanUrl.OriginalString); } else { GetDidYouMeanText(htmlDom).Should().BeNullOrEmpty(); } }
public void DFC1495ForAlsoFoundInCategories(int numberOfLinkedJobCategories) { var searchResultsView = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); var jobProfileSearchResultsViewModel = GenerateDummyJobProfileSearchResultViewModel( 1, "dummy-nextURL", "dummy-NextUrlText", "dummy-PreviousUrl", "dummy-PreviousUrlText", 1, 1, DummyJobProfileSearchResultsWithJobProfileCategories(numberOfLinkedJobCategories), "dummy result found", "Test"); var htmlDom = searchResultsView.RenderAsHtml(jobProfileSearchResultsViewModel); // var foundInText = htmlDom.DocumentNode.SelectSingleNode("//p[contains(@class, 'results-categories')]").InnerText; var linkedCategorySection = htmlDom.DocumentNode.SelectSingleNode("//p[contains(@class, 'results-categories')]"); if (numberOfLinkedJobCategories <= 0) { //The section should not be displayed if no linked categories linkedCategorySection.Should().BeNull(); } else { //Should have found in section linkedCategorySection.InnerText.Should().Contain("Found in:"); var foundInCategoryLinks = GetDisplayedViewAnchorLinks(linkedCategorySection); var expectedCategoryLinks = GetLinkedCategories(numberOfLinkedJobCategories, "/job-categories/"); foundInCategoryLinks.Should().BeEquivalentTo(expectedCategoryLinks); } }
public void DFC187ScenarioA1AndA2ForRetainSearchTerm(string nextUrl, string nextUrlText, string previousUrl, string previousUrlText, int count, int totalPages) { var searchResultsView = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); var jobProfileSearchResultsViewModel = GenerateDummyJobProfileSearchResultViewModel( 1, nextUrl, nextUrlText, previousUrl, previousUrlText, count, totalPages, DummyJobProfileSearchResultsWithAltTitle(), "1 result found", "Test"); var htmlDom = searchResultsView.RenderAsHtml(jobProfileSearchResultsViewModel); var searchTermText = htmlDom.DocumentNode.SelectNodes("//*[@id='search-main']").FirstOrDefault() .GetAttributeValue("value", "Attribute not found"); var searchBox = htmlDom.DocumentNode.SelectNodes("//input[contains(@id, 'search-main')]"); searchTermText.Should().Be("Test"); searchBox.Should().NotBeNull(); var resultText = htmlDom.DocumentNode.SelectNodes("//div[contains(@class, 'result-count')]").FirstOrDefault().InnerText; resultText.Should().Contain("1 result found"); var newJobProfileSearch = GenerateDummyJobProfileSearchResultViewModel( 1, nextUrl, nextUrlText, previousUrl, previousUrlText, count, totalPages, DummyMultipleJobProfileSearchResults(), "2 results found", "New Search Test"); htmlDom = searchResultsView.RenderAsHtml(newJobProfileSearch); searchTermText = htmlDom.DocumentNode.SelectNodes("//*[@id='search-main']").FirstOrDefault() .GetAttributeValue("value", "Attribute not found"); searchTermText.Should().Be("New Search Test"); resultText = htmlDom.DocumentNode.SelectNodes("//div[contains(@class, 'result-count')]").FirstOrDefault().InnerText; resultText.Should().Contain("2 results found"); }
public void DFC106ForSearchResultText(string nextUrl, string nextUrlText, string previousUrl, string previousUrlText, int count, int totalPages) { var searchResultsView = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); var jobProfileSearchResultsViewModel = GenerateDummyJobProfileSearchResultViewModel( 1, nextUrl, nextUrlText, previousUrl, previousUrlText, count, totalPages, DummyJobProfileSearchResultsWithAltTitle(), "1 result found", "Test"); var htmlDom = searchResultsView.RenderAsHtml(jobProfileSearchResultsViewModel); var resultText = htmlDom.DocumentNode.SelectNodes("//div[contains(@class, 'result-count')]").FirstOrDefault().InnerText; resultText.Should().Contain("1 result found"); }
public void DFC164ScenarioA2ForSearchwithNoAltTitle(string nextUrl, string nextUrlText, string previousUrl, string previousUrlText, int count, int totalPages) { var searchView = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); var jobProfileSearchViewModel = GenerateDummyJobProfileSearchResultViewModel( 1, nextUrl, nextUrlText, previousUrl, previousUrlText, count, totalPages, DummyJobProfileSearchResultsWithoutAltTitle(), "1 result found", "Test"); var htmlDom = searchView.RenderAsHtml(jobProfileSearchViewModel); var title = htmlDom.DocumentNode.SelectNodes("//a[contains(@class, 'dfc-code-search-jpTitle')]").FirstOrDefault().InnerText; var altTitle = htmlDom.DocumentNode.SelectNodes("//p[contains(@class, 'dfc-code-search-jpAltTitle')]"); title.Should().Contain("Test Result Title"); altTitle.Should().BeNullOrEmpty(); }
public void DFC164ScenarioA3ForSearchRankNo(string nextUrl, string nextUrlText, string previousUrl, string previousUrlText, int count, int totalPages) { var searchView = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); var jobProfileSearchViewModel = GenerateDummyJobProfileSearchResultViewModel(1, nextUrl, nextUrlText, previousUrl, previousUrlText, count, totalPages, DummyMultipleJobProfileSearchResults(), "2 results found", "Test"); var htmlDom = searchView.RenderAsHtml(jobProfileSearchViewModel); var result1 = htmlDom.DocumentNode.SelectNodes(".//*[@id='results']/div/div/ol/li[1]").FirstOrDefault(); var result2 = htmlDom.DocumentNode.SelectNodes(".//*[@id='results']/div/div/ol/li[2]").FirstOrDefault(); var rankId1 = result1.GetAttributeValue("data-ga-rank", "Attribute not found"); var rankId2 = result2.GetAttributeValue("data-ga-rank", "Attribute not found"); rankId1.Should().Be("1"); rankId2.Should().Be("2"); }
public void DFC324ForEmptySearchViewTest() { var searchPage = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); var jobProfileSearchViewModel = GenerateDummyJobProfileSearchResultViewModel(1, null, null, null, null, 0, 0, null, "0 results found", "''"); var htmlDom = searchPage.RenderAsHtml(jobProfileSearchViewModel); var searchTitle = htmlDom.DocumentNode.SelectNodes("//h1[contains(@class, 'search-title')]").FirstOrDefault().InnerText; var searchBox = htmlDom.DocumentNode.SelectNodes("//input[contains(@id, 'search-main')]"); var resultMessage = htmlDom.DocumentNode.SelectNodes("//div[contains(@class, 'result-count')]").FirstOrDefault().InnerText; searchTitle.Should().NotBeNullOrEmpty(); searchBox.Should().NotBeNullOrEmpty(); resultMessage.Should().NotBeNullOrEmpty(); resultMessage.Should().Contain("0 results found"); }
public void DFC167ForPaginationControlTests(int pageNumber, string nextUrl, string nextUrlText, string previousUrl, string previousUrlText, int count, int totalPages, string resultsMessage, string searchTerm) { var searchView = new _MVC_Views_JobProfileSearchBox_SearchResult_cshtml(); var jobProfileSearchViewModel = GenerateDummyJobProfileSearchResultViewModel(pageNumber, nextUrl, nextUrlText, previousUrl, previousUrlText, count, totalPages, DummyJobProfileSearchResultsWithAltTitle(), resultsMessage, searchTerm); var htmlDom = searchView.RenderAsHtml(jobProfileSearchViewModel); var nextUrllocal = htmlDom.DocumentNode.SelectNodes("//a[contains(@class, 'dfc-code-search-nextlink')]"); string nextUrlTextlocal; var previousUrllocal = htmlDom.DocumentNode.SelectNodes("//a[contains(@class, 'dfc-code-search-previouslink')]"); string previousUrlTextlocal; if (pageNumber == 1) { nextUrlTextlocal = htmlDom.DocumentNode.SelectNodes("//span[contains(@class, 'page-numbers')]").ElementAt(0).InnerText; nextUrllocal.Should().NotBeNullOrEmpty(); nextUrlTextlocal.Should().Contain(pageNumber + 1 + " of " + totalPages); previousUrllocal.Should().BeNullOrEmpty(); } else if (pageNumber == totalPages) { previousUrlTextlocal = htmlDom.DocumentNode.SelectNodes("//span[contains(@class, 'page-numbers')]").ElementAt(0).InnerText; nextUrllocal.Should().BeNullOrEmpty(); previousUrllocal.Should().NotBeNullOrEmpty(); previousUrlTextlocal.Should().Contain(pageNumber - 1 + " of " + totalPages); } else { nextUrlTextlocal = htmlDom.DocumentNode.SelectNodes("//span[contains(@class, 'page-numbers')]").ElementAt(0).InnerText; previousUrlTextlocal = htmlDom.DocumentNode.SelectNodes("//span[contains(@class, 'page-numbers')]").ElementAt(1).InnerText; nextUrllocal.Should().NotBeNullOrEmpty(); nextUrlTextlocal.Should().Contain(pageNumber + 1 + " of " + totalPages); previousUrllocal.Should().NotBeNullOrEmpty(); previousUrlTextlocal.Should().Contain(pageNumber - 1 + " of " + totalPages); } }