/* * 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.assertFalse; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.fail; import org.jboss.seam.example.common.test.selenium.SeamSelenium; import org.testng.annotations.Test; /** * * @author Jozef Hartinger * */ public class BidTest extends SeleniumSeamBayTest { @Test(dependsOnGroups = { "searchTest"}) public void simpleBidTest() { String title = "Lost Tales Volume 1 by J.R.R. Tolkien"; String price = "10"; int bidCount; login(); search(title); browser.clickAndWait(getProperty("SEARCH_RESULTS_FIRST_ROW_LINK")); browser.clickAndWait(getProperty("ITEM_BID_HISTORY")); if (browser.isElementPresent(getProperty("BID_HISTORY_COUNT_EMPTY"))) { bidCount = 0; } else { bidCount = browser.getXpathCount(getProperty("BID_HISTORY_COUNT")).intValue(); } browser.goBackAndWait(); placeBid(price); assertTrue("Auction page expected.", browser.getLocation().contains(getProperty("AUCTION_URL"))); browser.clickAndWait(getProperty("ITEM_BID_HISTORY")); assertEquals("Unexpected count of bids.", ++bidCount, browser.getXpathCount(getProperty("BID_HISTORY_COUNT"))); } @Test(dependsOnGroups = { "searchTest", "registrationTest" }, dependsOnMethods = { "simpleBidTest" }) public void complexBidTest() { String firstBidderName = "honestjoe"; String secondBidderName = "bidTester"; String title = "Nikon D80 Digital Camera"; SeamSelenium firstBrowser = browser; SeamSelenium secondBrowser = startBrowser(); try { // register new user in first browser browser.clickAndWait(getProperty("REGISTRATION")); submitRegistrationForm(secondBidderName, "password", "password", "Slovakia"); assertTrue("Creating new user failed.", isLoggedIn()); // place a bid for a camera search(title); browser.clickAndWait(getProperty("SEARCH_RESULTS_FIRST_ROW_LINK")); placeBid("2000"); // switch to second browser and place several bids browser = secondBrowser; browser.open(CONTEXT_PATH + getProperty("HOME_PAGE")); login(); search(title); browser.clickAndWait(getProperty("SEARCH_RESULTS_FIRST_ROW_LINK")); for (int i = 1100; i < 2000; i += 200) { placeBid(String.valueOf(i)); assertTrue("'You have been outbid' page expected.", browser.isElementPresent(getProperty("BID_OUTBID"))); } placeBid("2200"); assertFalse("Outbid unexpectedly", browser.isElementPresent(getProperty("BID_OUTBID"))); assertEquals("High bidder not recognized.", firstBidderName, browser.getText(getProperty("BID_HIGH_BIDDER"))); // switch to first browser again and place the highest bid again browser = firstBrowser; placeBid("2100"); assertTrue("'You have been outbid' page expected.", browser.isElementPresent(getProperty("BID_OUTBID"))); placeBid("2500"); assertEquals("High bidder not recognized.", secondBidderName, browser.getText(getProperty("BID_HIGH_BIDDER"))); } finally { browser = firstBrowser; secondBrowser.stop(); } } public void placeBid(String price) { if (browser.isElementPresent(getProperty("ITEM_NEW_BID_FIELD"))) { browser.type(getProperty("ITEM_NEW_BID_FIELD"), price); browser.clickAndWait(getProperty("ITEM_NEW_BID_SUBMIT")); } else if (browser.isElementPresent(getProperty("BID_INCREASE_FIELD"))) { browser.type(getProperty("BID_INCREASE_FIELD"), price); browser.clickAndWait(getProperty("BID_INCREASE_SUBMIT")); } else { fail("Unable to place a bid."); } browser.clickAndWait(getProperty("BID_CONFIRM")); } }