diff --git a/functional-test/src/main/java/org/zanata/page/projects/ProjectsPage.java b/functional-test/src/main/java/org/zanata/page/projects/ProjectsPage.java index a2668a5196..836203f2d7 100644 --- a/functional-test/src/main/java/org/zanata/page/projects/ProjectsPage.java +++ b/functional-test/src/main/java/org/zanata/page/projects/ProjectsPage.java @@ -28,6 +28,7 @@ import org.zanata.page.BasePage; import org.zanata.util.WebElementUtil; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -39,11 +40,14 @@ public class ProjectsPage extends BasePage { public static final int PROJECT_NAME_COLUMN = 0; private By createProjectButton = By.id("createProjectLink"); - private By mainContentDiv = By.id("main_body_content"); + private By searchProjectForm = By.id("search-project_form"); private By projectTable = By.id("main_content:form:projectList"); private By activeCheckBox = By.xpath("//*[@data-original-title='Filter active projects']"); private By readOnlyCheckBox = By.xpath("//*[@data-original-title='Filter read-only projects']"); + private By projectTabSearchPage = By.id("projects_tab"); + private By userTabSearchPage = By.id("users_tab"); + public ProjectsPage(final WebDriver driver) { super(driver); } @@ -71,15 +75,24 @@ public ProjectVersionsPage apply(WebDriver input) { }, "Find and go to project " + projectName); } - public List getProjectNamesOnCurrentPage() { + public List getProjectNamesOnSearchPage() { log.info("Query Projects list"); - if (readyElement(mainContentDiv) - .getText().contains("No project exists")) { - return Collections.emptyList(); + waitForPageSilence(); + gotoProjectTabInSearchPage(); + + log.info("Query Group project versions"); + + List names = new ArrayList(); + for (WebElement row : readyElement(searchProjectForm) + .findElements(By.xpath("//h3[@class='list__title']"))) { + names.add(row.getText()); } + return names; + + } - return WebElementUtil.getColumnContents(getDriver(), projectTable, - PROJECT_NAME_COLUMN); + public void gotoProjectTabInSearchPage() { + clickElement(projectTabSearchPage); } /** @@ -90,7 +103,7 @@ public List getProjectNamesOnCurrentPage() { public ProjectsPage expectProjectVisible(final String projectName) { log.info("Wait for project {} visible", projectName); waitForPageSilence(); - assertThat(getProjectNamesOnCurrentPage()).contains(projectName); + assertThat(getProjectNamesOnSearchPage()).contains(projectName); return new ProjectsPage(getDriver()); } @@ -102,7 +115,7 @@ public ProjectsPage expectProjectVisible(final String projectName) { public ProjectsPage expectProjectNotVisible(final String projectName) { log.info("Wait for project {} not visible", projectName); waitForPageSilence(); - assertThat(getProjectNamesOnCurrentPage()).doesNotContain( + assertThat(getProjectNamesOnSearchPage()).doesNotContain( projectName); return new ProjectsPage(getDriver()); } diff --git a/functional-test/src/main/java/org/zanata/workflow/ProjectWorkFlow.java b/functional-test/src/main/java/org/zanata/workflow/ProjectWorkFlow.java index 24c7e9b63d..0db7487bc9 100644 --- a/functional-test/src/main/java/org/zanata/workflow/ProjectWorkFlow.java +++ b/functional-test/src/main/java/org/zanata/workflow/ProjectWorkFlow.java @@ -52,7 +52,7 @@ public class ProjectWorkFlow extends AbstractWebWorkFlow { public ProjectVersionsPage createNewSimpleProject(String projectId, String projectName) { ProjectsPage projectsPage = goToHome().goToProjects(); - List projects = projectsPage.getProjectNamesOnCurrentPage(); + List projects = projectsPage.getProjectNamesOnSearchPage(); log.info("current projects: {}", projects); if (projects.contains(projectName)) { @@ -79,7 +79,7 @@ public ProjectVersionsPage createNewSimpleProject(String projectId, */ public ProjectVersionsPage createNewProject(HashMap settings) { ProjectsPage projectsPage = goToHome().goToProjects(); - List projects = projectsPage.getProjectNamesOnCurrentPage(); + List projects = projectsPage.getProjectNamesOnSearchPage(); log.info("current projects: {}", projects); CreateProjectPage createProjectPage = projectsPage .clickOnCreateProjectLink() @@ -148,7 +148,7 @@ public VersionLanguagesPage createNewProjectVersion(String projectName, public ProjectVersionsPage goToProjectByName(String projectName) { ProjectsPage projects = goToHome().goToProjects(); log.info("go to project by name with current projects: {}, name: {}", - projects.getProjectNamesOnCurrentPage(), projectName); + projects.getProjectNamesOnSearchPage(), projectName); return projects.goToProject(projectName); } diff --git a/functional-test/src/test/java/org/zanata/feature/project/EditProjectGeneralTest.java b/functional-test/src/test/java/org/zanata/feature/project/EditProjectGeneralTest.java index 2abe50b543..a790aea700 100644 --- a/functional-test/src/test/java/org/zanata/feature/project/EditProjectGeneralTest.java +++ b/functional-test/src/test/java/org/zanata/feature/project/EditProjectGeneralTest.java @@ -73,7 +73,7 @@ public void setAProjectToReadOnly() throws Exception { .setReadOnlyFilterEnabled(false) .expectProjectNotVisible("about fedora"); - assertThat(projectsPage.getProjectNamesOnCurrentPage()) + assertThat(projectsPage.getProjectNamesOnSearchPage()) .doesNotContain("about fedora") .as("The project is not displayed"); @@ -81,7 +81,7 @@ public void setAProjectToReadOnly() throws Exception { .setReadOnlyFilterEnabled(true) .expectProjectVisible("about fedora"); - assertThat(projectsPage.getProjectNamesOnCurrentPage()) + assertThat(projectsPage.getProjectNamesOnSearchPage()) .contains("about fedora") .as("The project is now displayed"); } @@ -100,7 +100,7 @@ public void setAProjectToWritable() throws Exception { .setActiveFilterEnabled(false) .setReadOnlyFilterEnabled(true) .expectProjectVisible("about fedora") - .getProjectNamesOnCurrentPage()) + .getProjectNamesOnSearchPage()) .contains("about fedora") .as("The project is locked"); @@ -116,7 +116,7 @@ public void setAProjectToWritable() throws Exception { .setReadOnlyFilterEnabled(false) .expectProjectVisible("about fedora"); - assertThat(projectsPage.getProjectNamesOnCurrentPage()) + assertThat(projectsPage.getProjectNamesOnSearchPage()) .contains("about fedora") .as("The project is now displayed"); } diff --git a/functional-test/src/test/java/org/zanata/feature/project/SetProjectVisibilityTest.java b/functional-test/src/test/java/org/zanata/feature/project/SetProjectVisibilityTest.java index a3d9853784..33fe9de487 100644 --- a/functional-test/src/test/java/org/zanata/feature/project/SetProjectVisibilityTest.java +++ b/functional-test/src/test/java/org/zanata/feature/project/SetProjectVisibilityTest.java @@ -38,7 +38,7 @@ public void deleteAProject() throws Exception { .confirmDeleteProject() .goToProjects(); - assertThat(projectsPage.getProjectNamesOnCurrentPage()) + assertThat(projectsPage.getProjectNamesOnSearchPage()) .doesNotContain("about fedora") .as("The project is not displayed"); @@ -47,7 +47,7 @@ public void deleteAProject() throws Exception { projectsPage.expectProjectVisible("about fedora"); - assertThat(projectsPage.getProjectNamesOnCurrentPage()) + assertThat(projectsPage.getProjectNamesOnSearchPage()) .contains("about fedora") .as("The project is now displayed"); @@ -56,7 +56,7 @@ public void deleteAProject() throws Exception { assertThat(new LoginWorkFlow() .signIn("translator", "translator") .goToProjects() - .getProjectNamesOnCurrentPage()) + .getProjectNamesOnSearchPage()) .doesNotContain("about fedora") .as("User cannot navigate to the archived project"); } diff --git a/functional-test/src/test/java/org/zanata/feature/search/ProjectSearchTest.java b/functional-test/src/test/java/org/zanata/feature/search/ProjectSearchTest.java index 125f843905..7f220d225e 100644 --- a/functional-test/src/test/java/org/zanata/feature/search/ProjectSearchTest.java +++ b/functional-test/src/test/java/org/zanata/feature/search/ProjectSearchTest.java @@ -78,7 +78,7 @@ public void unsuccessfulProjectSearch() throws Exception { .expectSearchListContains("Search Zanata for 'arodef'") .submitSearch(); - assertThat(projectsPage.getProjectNamesOnCurrentPage().isEmpty()) + assertThat(projectsPage.getProjectNamesOnSearchPage().isEmpty()) .isTrue() .as("No projects are displayed"); } diff --git a/zanata-war/src/main/java/org/zanata/action/ZanataSearch.java b/zanata-war/src/main/java/org/zanata/action/ZanataSearch.java index cda330d026..45bca6adc9 100644 --- a/zanata-war/src/main/java/org/zanata/action/ZanataSearch.java +++ b/zanata-war/src/main/java/org/zanata/action/ZanataSearch.java @@ -162,8 +162,7 @@ protected List fetchAll() { try { List projects = projectDAO.searchProjects(getAutocomplete() - .getQuery(), -1, 0, - includeObsolete); + .getQuery(), -1, 0, includeObsolete); Collections.sort(projects, projectComparator); return projects; } catch (ParseException e) { diff --git a/zanata-war/src/main/java/org/zanata/dao/ProjectDAO.java b/zanata-war/src/main/java/org/zanata/dao/ProjectDAO.java index 3891f0885d..9a14a999a1 100644 --- a/zanata-war/src/main/java/org/zanata/dao/ProjectDAO.java +++ b/zanata-war/src/main/java/org/zanata/dao/ProjectDAO.java @@ -267,8 +267,7 @@ public List searchProjects(@Nonnull String searchQuery, public int getQueryProjectSize(@Nonnull String searchQuery, boolean includeObsolete) throws ParseException { - FullTextQuery query = buildSearchQuery(searchQuery, includeObsolete); - return query.getResultSize(); + return searchProjects(searchQuery, -1, 0, includeObsolete).size(); } private FullTextQuery buildSearchQuery(@Nonnull String searchQuery,