001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.tests.browser;
034:
035: import org.testng.Assert;
036: import org.testng.annotations.Test;
037:
038: /**
039: * Search result tests for the backend administration.
040: *
041: * @author Daniel Lichtenberger (daniel.lichtenberger@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
042: * @version $Rev: 229 $
043: */
044: public class AdmSearchResultBrowserTest extends
045: AbstractBackendBrowserTest {
046: /**
047: * Submit a quick fulltext search, switch to thumbnails, open first result row
048: */
049: @Test(groups="browser")
050: public void fulltextSearch() {
051: try {
052: loginSupervisor();
053:
054: submitQuicksearch("test caption");
055: thumbnailView();
056:
057: // load first result row in edit mode through the context menu
058: getSearchResultContextMenu().openAt("row0").clickOption(
059: "edit");
060: selenium.waitForPageToLoad("30000");
061:
062: // save content
063: selenium.click("frm:saveButton_icon");
064: selenium.waitForPageToLoad("30000");
065: } finally {
066: logout();
067: }
068: }
069:
070: /**
071: * Submit a quick search, then do basic row selection tasks in list and thumbnail mode.
072: */
073: @Test(groups="browser")
074: public void searchResultRowSelection() {
075: try {
076: loginSupervisor();
077: submitQuicksearch("test caption");
078:
079: listView();
080: selectRowRange(0, 10);
081: thumbnailView();
082: selectRowRange(0, 10);
083:
084: selenium.click("row0");
085: } finally {
086: logout();
087: }
088: }
089:
090: private void selectRowRange(int firstRow, int lastRow) {
091: // select a row range
092: selenium.click("row" + firstRow);
093: // one row should be selected
094: Assert
095: .assertEquals(
096: Integer
097: .parseInt(selenium
098: .getEval("this.browserbot.getCurrentWindow().rowSelection.getSelected().length")),
099: 1);
100: selenium.shiftKeyDown();
101: selenium.click("row" + lastRow);
102: selenium.shiftKeyUp();
103: // check selection range
104: Assert
105: .assertEquals(
106: Integer
107: .parseInt(selenium
108: .getEval("this.browserbot.getCurrentWindow().rowSelection.getSelected().length")),
109: (lastRow - firstRow + 1));
110: }
111:
112: private FlexiveSelenium.ContextMenu getSearchResultContextMenu() {
113: return selenium.getContextMenu("frm:searchResults_resultMenu");
114: }
115:
116: private void thumbnailView() {
117: // switch to thumbnail view
118: selectFrame(Frame.Top);
119: selenium.click("thumbsButton_toolbarIcon");
120: selectFrame(Frame.Content);
121: selenium.waitForPageToLoad("30000");
122: }
123:
124: private void listView() {
125: // switch to thumbnail view
126: selenium.selectFrame("relative=top");
127: selenium.click("listButton_toolbarIcon");
128: selectFrame(Frame.Content);
129: selenium.waitForPageToLoad("30000");
130: }
131:
132: private void submitQuicksearch(String query) {
133: selenium.type("query", query);
134: selenium.click("searchForm:submitQueryButton");
135:
136: // wait for search results
137: selenium
138: .waitForCondition(
139: WND
140: + ".getContentFrame().location.href.indexOf('searchResult.jsf') > 0",
141: "30000");
142: selenium
143: .waitForCondition(
144: WND
145: + ".document.getElementById('thumbsButton_toolbarIcon') != null",
146: "30000");
147: }
148:
149: }
|