Package org.jboss.seam.example.seambay.test.selenium

Source Code of org.jboss.seam.example.seambay.test.selenium.SellTest

/*
* 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")));
   }
}
TOP

Related Classes of org.jboss.seam.example.seambay.test.selenium.SellTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.