package com.google.sitebricks.acceptance.page; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.PageFactory; import com.google.sitebricks.acceptance.util.AcceptanceTest; import com.google.sitebricks.example.SitebricksConfig; public class ConversionPage { private WebDriver driver; public ConversionPage(WebDriver driver) { this.driver = driver; } public boolean hasDate(Date date) { SimpleDateFormat sdf = new SimpleDateFormat(SitebricksConfig.DEFAULT_DATE_TIME_FORMAT); String target = sdf.format(date); return driver.findElement(By.id("boundDate")) .getText() .contains(target); } public boolean hasCalendar(Calendar calendar) { SimpleDateFormat sdf = new SimpleDateFormat(SitebricksConfig.DEFAULT_DATE_TIME_FORMAT); String target = sdf.format(calendar.getTime()); String node = driver.getPageSource(); return driver.findElement(By.id("boundCalendar")) .getText() .contains(target); } public boolean hasMessage(String message) { return driver.findElement(By.id("boundText")) .getText() .contains(message); } public boolean hasDouble(Double dbl) { return driver.findElement(By.id("boundDouble")) .getText() .contains(dbl.toString()); } public static ConversionPage open(WebDriver driver, Date date, Calendar calendar, String dateFormat, String msg, Double dbl) { SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); StringBuilder sb = new StringBuilder (); if (date != null) { if (sb.length() > 0) sb.append("&"); sb.append ("date=").append(encode(sdf.format(date))); } if (calendar != null) { if (sb.length() > 0) sb.append("&"); sb.append ("calendar=").append(encode(sdf.format(calendar.getTime()))); } if (msg != null) { if (sb.length() > 0) sb.append("&"); sb.append ("message=").append(encode(msg)); } if (msg != null) { if (sb.length() > 0) sb.append("&"); sb.append ("dbl=").append(encode(dbl.toString())); } sb.insert(0,"/conversion?").insert(0, AcceptanceTest.baseUrl()); driver.get(sb.toString()); return PageFactory.initElements(driver, ConversionPage.class); } private static String encode(String s){ try { return URLEncoder.encode(s,"UTF-8"); } catch(Exception e){ return s; } } }