/* * JBoss, Home of Professional Open Source * Copyright 2008, Red Hat Middleware LLC, and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.seam.example.seambay.test.selenium; import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.assertEquals; import java.text.NumberFormat; import java.text.ParseException; import org.testng.annotations.Test; import com.thoughtworks.selenium.Wait; /** * * @author Jozef Hartinger * */ public class SellTest extends SeleniumSeamBayTest { private long listWaitTime = 5000; private NumberFormat nf = NumberFormat.getInstance(); @Test(dependsOnGroups={"searchTest"}) public void joystickSellingTest() throws NumberFormatException, ParseException { String title = "Saitek X52 Pro Flight System"; int category = 7; int subcategory = 3; String duration = "7"; String price = "100"; String description = "The most fully integrated Stick and throttle flight controller: built to meet the demands of the best virtual pilots in the world!"; sellItem(title, category, subcategory, duration, price, description); } protected void sellItem(String title, int category, int subcategory, String duration, String price, String description) throws NumberFormatException, ParseException { login(); browser.clickAndWait(getProperty("SELL")); submitSell1Page(title); submitSell2Page(category, subcategory); submitSell3Page(duration, price); submitSell4Page(); submitSell5Page(description); validatePreview(price, description); browser.clickAndWait(getProperty("SELL_CONFIRM")); assertTrue("Navigation failure, home page expected", browser.getLocation().contains(getProperty("HOME_PAGE"))); assertEquals("Unexpected number of search results.", 1, search(title)); } protected void submitSell1Page(String title) { assertTrue("Navigation failure, sell1 page expected", browser.getLocation().contains(getProperty("SELL_1_URL"))); browser.type(getProperty("SELL_TITLE"), title); browser.clickAndWait(getProperty("SELL_NEXT")); } protected void submitSell2Page(int category, int subcategory) { assertTrue("Navigation failure, sell2 page expected", browser.getLocation().contains(getProperty("SELL_2_URL"))); new Wait() { @Override public boolean until() { return browser.isElementPresent(getProperty("SELL_CATEGORY_SELECT_SECOND_OPTION")); } }; /*this sleeping is necessary because although the previous waiting ensures the 14. option present in select component in java code, the web page on its own is not ready yet*/ try { Thread.sleep(listWaitTime); } catch (InterruptedException e) { } browser.select(getProperty("SELL_CATEGORY_SELECT"), "index=" + category); if (subcategory != 0) { new Wait() { @Override public boolean until() { return browser.isElementPresent(getProperty("SELL_SUBCATEGORY_SELECT")); } }; browser.select(getProperty("SELL_SUBCATEGORY_SELECT"), "index=" + subcategory); } browser.clickAndWait(getProperty("SELL_NEXT")); } protected void submitSell3Page(String duration, String price) { assertTrue("Navigation failure, sell3 page expected", browser.getLocation().contains(getProperty("SELL_3_URL"))); browser.type(getProperty("SELL_DURATION"), duration); browser.type(getProperty("SELL_PRICE"), price); browser.clickAndWait(getProperty("SELL_NEXT")); } protected void submitSell4Page() { assertTrue("Navigation failure, sell4 page expected", browser.getLocation().contains(getProperty("SELL_4_URL"))); browser.clickAndWait(getProperty("SELL_NEXT")); } protected void submitSell5Page(String description) { assertTrue("Navigation failure, sell5 page expected", browser.getLocation().contains(getProperty("SELL_5_URL"))); browser.type(getProperty("SELL_DESCRIPTION"), description); browser.clickAndWait(getProperty("SELL_NEXT")); } protected void validatePreview(String price, String description) throws NumberFormatException, ParseException { assertTrue("Must be on preview page to validate preview.", browser.getLocation().contains(getProperty("SELL_PREVIEW_URL"))); assertEquals("Unexpected price on preview page.", Double.valueOf(price), nf.parse(browser.getText(getProperty("SELL_PREVIEW_PRICE"))).doubleValue()); assertEquals("Unexpected description on description page.", description, browser.getText(getProperty("SELL_PREVIEW_DESCRIPTION"))); } }