/* * (C) Copyright 2016 Nuxeo SA (http://nuxeo.com/) and others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Contributors: * <a href="mailto:glefevre@nuxeo.com">Gildas</a> * Yannis JULIENNE */ package org.nuxeo.ftest.cap; import java.util.Date; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.nuxeo.functionaltests.AbstractTest; import org.nuxeo.functionaltests.RestHelper; import org.nuxeo.functionaltests.forms.Select2WidgetElement; import org.nuxeo.functionaltests.pages.DocumentBasePage.UserNotConnectedException; import org.nuxeo.functionaltests.pages.FileDocumentBasePage; import org.nuxeo.functionaltests.pages.admincenter.usermanagement.UserViewTabSubPage; import org.nuxeo.functionaltests.pages.search.QuickSearchSubPage; import org.nuxeo.functionaltests.pages.search.SearchPage; import org.nuxeo.functionaltests.pages.search.SearchResultsSubPage; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import static org.nuxeo.functionaltests.Constants.FILE_TYPE; import static org.nuxeo.functionaltests.Constants.WORKSPACES_PATH; import static org.nuxeo.functionaltests.Constants.WORKSPACE_TYPE; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; /** * Test of the suggestbox defined with a select2. * * @since 6.0 */ public class ITSuggestBoxTest extends AbstractTest { /** * Use a workspace title with special characters (NXP-15618). */ private final static String WORKSPACE_TITLE = "#W/o=rk^s+pa>ce'~Title%" + new Date().getTime(); private static final String USER1_NAME = "user1"; private static final String USER2_NAME = "user2"; private static final String FILE_01_NAME = "Test01" + new Date().getTime(); private static final String FILE_02_NAME = "Test02" + new Date().getTime(); private static final String FILE_03_NAME = "Test03" + new Date().getTime(); private static final String XPATH_SUGGESTBOX = "//*[@id='s2id_nxw_suggest_search_box_form:nxw_suggest_search_box_select2']"; private static final String VALUE_WITH_SPECIALS_CHAR = "h\u00e9h\u00e9"; @Before public void before() throws UserNotConnectedException { RestHelper.createUser(USER1_NAME, USER1_NAME, USER1_NAME, "lastname1", "company1", "email1", "members"); // make sure personal ws created login(USER1_NAME, USER1_NAME); logout(); RestHelper.createUser(USER2_NAME, USER2_NAME, USER2_NAME, "lastname1", "company1", "email1", "members"); String wsId = RestHelper.createDocument(WORKSPACES_PATH, WORKSPACE_TYPE, WORKSPACE_TITLE, "Workspace for Webdriver test."); RestHelper.createDocument(wsId, FILE_TYPE, FILE_01_NAME, "Test File description"); RestHelper.createDocument(wsId, FILE_TYPE, FILE_02_NAME, "Test File description"); RestHelper.createDocument(wsId, FILE_TYPE, FILE_03_NAME, "Test File description"); } @After public void after() { RestHelper.cleanup(); } @Test public void simpleSearchTest() throws Exception { // Test a simple search login(); Select2WidgetElement searchElement = new Select2WidgetElement(driver, driver.findElement(By.xpath(XPATH_SUGGESTBOX)), true); List<WebElement> listEntries = searchElement.typeAndGetResult("Tes"); assertTrue(listEntries.size() > 0); searchElement.clearSuggestInput(); searchElement.hideSuggestionsByEscapeKey(); // Search for file01 listEntries = searchElement.typeAndGetResult(FILE_01_NAME); assertTrue(listEntries.size() == 1); listEntries.get(0).click(); // Check if the page is the detail FileDocumentBasePage documentPage = asPage(FileDocumentBasePage.class); documentPage.checkDocTitle(FILE_01_NAME); // Search a user, make sure personal ws created first searchElement = new Select2WidgetElement(driver, driver.findElement(By.xpath(XPATH_SUGGESTBOX)), true); listEntries = searchElement.typeAndGetResult(USER1_NAME); assertTrue(listEntries.size() == 2); listEntries.get(1).click(); UserViewTabSubPage userPage = asPage(UserViewTabSubPage.class); userPage.checkUserName(USER1_NAME); logout(); } @Test public void testSuggestBoxRedirect() throws Exception { login(); Select2WidgetElement searchElement = new Select2WidgetElement(driver, driver.findElement(By.xpath(XPATH_SUGGESTBOX)), true); SearchPage searchPage = searchElement.typeValueAndTypeEnter("Administrator"); assertTrue(searchPage.isQuickSearch()); QuickSearchSubPage quickSearchPage = searchPage.getQuickSearch(); SearchResultsSubPage searchResultsSubPage = searchPage.getSearchResultsSubPage(); // Tests the results assertEquals("Administrator", quickSearchPage.textSearchElement.getAttribute("value")); assertEquals(SearchPage.QUICK_SEARCH, searchResultsSubPage.searchViewTitle.getText()); List<WebElement> listResults = searchResultsSubPage.getListResults(); assertTrue(listResults.size() > 0); } @Test public void requestEncodingTest() throws Exception { login(); Select2WidgetElement searchElement = new Select2WidgetElement(driver, driver.findElement(By.xpath(XPATH_SUGGESTBOX)), true); SearchPage searchPage = searchElement.typeValueAndTypeEnter(VALUE_WITH_SPECIALS_CHAR); assertTrue(searchPage.isQuickSearch()); assertEquals(VALUE_WITH_SPECIALS_CHAR, searchPage.getQuickSearch().textSearchElement.getAttribute("value")); } }