Skip to content

Commit

Permalink
Refactored the PageObject class for better backward compatibility.
Browse files Browse the repository at this point in the history
  • Loading branch information
wakaleo committed Feb 12, 2015
1 parent 26cce2d commit 826c30f
Show file tree
Hide file tree
Showing 138 changed files with 183 additions and 174 deletions.
4 changes: 2 additions & 2 deletions core/src/main/java/net/serenitybdd/core/Serenity.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import net.serenitybdd.core.sessions.TestSessionVariables;
import net.thucydides.core.annotations.TestCaseAnnotations;
import net.thucydides.core.guice.Injectors;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.steps.*;
import net.thucydides.core.steps.di.DependencyInjectorService;
import net.thucydides.core.webdriver.Configuration;
Expand Down Expand Up @@ -148,7 +148,7 @@ protected static void injectAnnotatedPagesObjectInto(final Object testCase) {
StepAnnotations.injectOptionalAnnotatedPagesObjectInto(testCase, getPages());
}

/**
/**
* Indicate that the test run using this object is finished, and reports can be generated.
*/
public static void done() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ protected PageObject() {
setupPageUrls();
}

protected PageObject(final WebDriver driver, Predicate<PageObject> callback) {
protected PageObject(final WebDriver driver, Predicate<? super PageObject> callback) {
this();
this.driver = driver;
callback.apply(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.google.common.base.Optional;
import net.thucydides.core.annotations.Fields;
import net.thucydides.core.annotations.ManagedPages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.reflection.FieldSetter;
import net.thucydides.core.steps.InvalidManagedPagesFieldException;

Expand Down Expand Up @@ -73,6 +74,10 @@ protected PagesAnnotatedField(final Field field, final ManagedPages annotation)
this.annotation = annotation;
}

public Class<?> getFieldType() {
return this.field.getType();
}

public void setValue(final Object testCase, final Pages pages) {
try {
set(testCase).to(pages);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.google.common.base.Optional;
import net.thucydides.core.guice.Injectors;
import net.thucydides.core.model.TestOutcome;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.reports.ReportService;
import net.thucydides.core.steps.*;
import net.thucydides.core.webdriver.Configuration;
Expand Down
28 changes: 26 additions & 2 deletions core/src/main/java/net/thucydides/core/pages/PageObject.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,28 @@
package net.thucydides.core.pages;

@Deprecated
public abstract class PageObject extends net.serenitybdd.core.pages.PageObject {}
import com.google.common.base.Predicate;
import org.openqa.selenium.WebDriver;

/**
* A base class representing a WebDriver page object.
*
* @author johnsmart
*/
public abstract class PageObject extends net.serenitybdd.core.pages.PageObject {

protected PageObject() {
super();
}

protected PageObject(WebDriver driver, Predicate<? super net.serenitybdd.core.pages.PageObject> callback) {
super(driver, callback);
}

public PageObject(WebDriver driver, int ajaxTimeout) {
super(driver, ajaxTimeout);
}

public PageObject(WebDriver driver) {
super(driver);
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package net.serenitybdd.core.pages;
package net.thucydides.core.pages;

import com.google.common.base.Optional;
import net.serenitybdd.core.pages.PageObject;
import net.thucydides.core.annotations.Fields;
import net.thucydides.core.guice.Injectors;
import net.thucydides.core.pages.WrongPageError;
import net.thucydides.core.webdriver.Configuration;
import net.thucydides.core.webdriver.WebDriverFacade;
import net.thucydides.core.webdriver.WebdriverProxyFactory;
Expand Down Expand Up @@ -57,8 +57,8 @@ public Pages(final WebDriver driver) {
this.driver = driver;
}

public Pages(final WebDriver driver, Configuration Configuration) {
this(Configuration);
public Pages(final WebDriver driver, Configuration configuration) {
this(configuration);
this.driver = driver;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,20 @@
import static org.apache.commons.collections.IteratorUtils.toList;

public class ExampleTable {
private static final String SQUARE_BRACKETS_OR_WHITE_SPACE = "[][] \t";
List<String> headers;
List<List<String>> rows = Lists.newArrayList();

final static Pattern NEW_LINE = Pattern.compile("(\\r\\n)|(\\n)|(\\r)|(␤)|(\\r␤)");
private static final String SQUARE_BRACKETS_OR_WHITE_SPACE = "[][] \t";

public ExampleTable(String tableContents) {
List<String> lines = toList(Splitter.on(NEW_LINE)
.omitEmptyStrings()
.trimResults(CharMatcher.anyOf(SQUARE_BRACKETS_OR_WHITE_SPACE))
.split(tableContents).iterator());
addHeaderFrom(lines.get(0));
for(int row = 1; row < lines.size(); row++) {
addRowFrom(lines.get(row));
}
List<String> lines = toList(Splitter.on(NEW_LINE)
.omitEmptyStrings()
.trimResults(CharMatcher.anyOf(SQUARE_BRACKETS_OR_WHITE_SPACE))
.split(tableContents).iterator());
addHeaderFrom(lines.get(0));
for(int row = 1; row < lines.size(); row++) {
addRowFrom(lines.get(row));
}
}

private void addRowFrom(String row) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,8 @@ private String withTablesReplaced(String text) {
}

private String convertNonStandardNLChars(String text) {
text = StringUtils.replace(text, "\r␤", NEW_LINE);
StringUtils.replace(text, "\r␤", NEW_LINE)
.replace("␤", NEW_LINE);
return StringUtils.replace(text, "␤", NEW_LINE);
}

Expand Down Expand Up @@ -209,7 +210,7 @@ private List<String> getEmbeddedTablesIn(String text) {
try {
String line;
while ((line = reader.readLine()) != null) {
if (!inTable && line.contains("|")){ // start of a table
if (!inTable && containsTableStart(line)){ // start of a table
inTable = true;
} else if (inTable && !line.contains("|") && !(isBlank(line))){ // end of a table
embeddedTables.add(tableText.toString().trim());
Expand All @@ -231,6 +232,10 @@ private List<String> getEmbeddedTablesIn(String text) {

}

private boolean containsTableStart(String line) {
return line.contains("|");
}

private String getFirstEmbeddedTable(String text) {
BufferedReader reader = new BufferedReader(new StringReader(text));
StringBuffer tableText = new StringBuffer();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@
import com.google.common.collect.Lists;
import com.google.inject.Injector;
import net.serenitybdd.core.PendingStepException;
import net.serenitybdd.core.Serenity;
import net.thucydides.core.annotations.TestAnnotations;
import net.thucydides.core.guice.Injectors;
import net.thucydides.core.model.*;
import net.thucydides.core.model.stacktrace.FailureCause;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.serenitybdd.core.pages.SystemClock;
import net.thucydides.core.screenshots.*;
import net.thucydides.core.webdriver.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.google.inject.Key;
import net.thucydides.core.guice.Injectors;
import net.thucydides.core.logging.ThucydidesLogging;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.statistics.Statistics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import net.serenitybdd.core.di.DependencyInjector;
import net.thucydides.core.annotations.Fields;
import net.serenitybdd.core.pages.PageObject;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;

import java.lang.reflect.Field;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package net.thucydides.core.steps;

import net.thucydides.core.guice.Injectors;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.serenitybdd.core.pages.SystemClock;
import org.openqa.selenium.WebDriver;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package net.thucydides.core.steps;

import com.google.common.base.Optional;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.serenitybdd.core.pages.PagesAnnotatedField;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.thucydides.core.guice.Injectors;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.steps.di.DependencyInjectorService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ protected int ajaxTimeoutInSecondsWithAtLeast1Second() {
}
}

public boolean apply(PageObject page) {
public boolean apply(net.serenitybdd.core.pages.PageObject page) {
page.setWaitForTimeout(ajaxTimeoutInMilliseconds);
elementProxyCreator.proxyElements(page, driver, ajaxTimeoutInSecondsWithAtLeast1Second());
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import net.thucydides.core.annotations.TestCaseAnnotations;
import net.thucydides.core.guice.Injectors;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.steps.StepAnnotations;
import net.thucydides.core.steps.StepFactory;
import org.apache.commons.lang3.StringUtils;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package net.thucydides.core.csv

import net.thucydides.core.annotations.Step
import net.serenitybdd.core.pages.Pages
import net.thucydides.core.pages.Pages
import net.thucydides.core.steps.ScenarioSteps
import net.thucydides.core.steps.StepFactory
import spock.lang.Specification
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package net.thucydides.core.pages

import net.serenitybdd.core.pages.PageObject
import net.serenitybdd.core.pages.Pages
import org.openqa.selenium.WebDriver
import spock.lang.Specification

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,22 +115,6 @@ class WhenFormattingDataForTheHTMLReports extends Specification {
formattedDescription.contains("<tbody><tr><td>Jill</td><td>100000</td><td>800</td></tr><tr><td>Joe</td><td>50000</td><td>50</td></tr></tbody></table>")
}

def "should format embedded tables without starting and ending pipes"() {
given:
def stepDescription = """Given the following accounts:
owner | points | statusPoints
Jill | 100000 | 800
Joe | 50000 | 50 """
and:
def formatter = new Formatter(issueTracking);
when:
def formattedDescription = formatter.formatWithFields(stepDescription, [])
then:
formattedDescription.contains("Given the following accounts:")
formattedDescription.contains("<table class='embedded'><thead><th>owner</th><th>points</th><th>statusPoints</th></thead>")
formattedDescription.contains("<tbody><tr><td>Jill</td><td>100000</td><td>800</td></tr><tr><td>Joe</td><td>50000</td><td>50</td></tr></tbody></table>")
}

def "should format single cell table"() {
given:
def singleCellTable = "[|heading|]"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package net.thucydides.core.steps

import net.thucydides.core.annotations.Step
import net.serenitybdd.core.pages.PageObject
import net.serenitybdd.core.pages.Pages
import net.thucydides.core.pages.Pages
import org.openqa.selenium.WebDriver
import spock.lang.Specification

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package net.thucydides.core.webdriver

import net.thucydides.core.annotations.Managed
import net.thucydides.core.annotations.ManagedPages
import net.serenitybdd.core.pages.Pages
import net.thucydides.core.pages.Pages
import org.openqa.selenium.WebDriver
import org.openqa.selenium.htmlunit.HtmlUnitDriver
import spock.lang.Specification
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import net.thucydides.core.annotations.ManagedPages;
import net.thucydides.core.annotations.Step;
import net.thucydides.core.annotations.Steps;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.steps.ScenarioSteps;
import net.thucydides.core.steps.StepListener;
import org.junit.After;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package net.serenitybdd.core.pages;

import net.serenitybdd.core.pages.Pages;
import net.serenitybdd.core.pages.PagesAnnotatedField;
import net.thucydides.core.pages.Pages;
import org.junit.Test;
import org.springframework.util.ReflectionUtils;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package net.serenitybdd.core.pages;


import net.serenitybdd.core.pages.AnyPage;
import net.serenitybdd.core.pages.PageObject;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.pages.ApacheHomePage;
import net.thucydides.core.pages.WrongPageError;
import net.thucydides.core.util.MockEnvironmentVariables;
Expand Down Expand Up @@ -45,7 +43,7 @@ public void initMocksAndClearSystemwideDefaultUrl() {
configuration = new SystemPropertiesConfiguration(environmentVariables);
}

static class SimplePage extends PageObject {
public static class SimplePage extends PageObject {

public SimplePage(final WebDriver driver) {
super(driver);
Expand Down Expand Up @@ -184,14 +182,14 @@ public void the_pages_object_throws_a_wrong_page_error_when_the_page_object_does
pages.currentPageAt(PageObjectWithNoDriverConstructor.class);
}

static final class GooglePage extends PageObject {
public static final class GooglePage extends PageObject {

public GooglePage(final WebDriver driver) {
super(driver);
}
}

static final class SomeOtherPage extends PageObject {
public static final class SomeOtherPage extends PageObject {

public SomeOtherPage(final WebDriver driver) {
super(driver);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import net.thucydides.core.annotations.Step;
import net.thucydides.core.annotations.Steps;
import net.thucydides.core.model.samples.MyInheritedStepLibrary;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.steps.ScenarioSteps;
import net.thucydides.core.steps.StepEventBus;
import net.thucydides.core.steps.StepFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import net.thucydides.core.issues.IssueTracking;
import net.thucydides.core.issues.SystemPropertiesIssueTracking;
import net.thucydides.core.model.stacktrace.FailureCause;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.statistics.model.TestRunTag;
import net.thucydides.core.statistics.model.TestStatistics;
import net.thucydides.core.steps.ScenarioSteps;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package net.thucydides.core.model.samples;

import net.thucydides.core.annotations.Step;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;
import net.thucydides.core.steps.ScenarioSteps;

public class MyBaseStepLibrary extends ScenarioSteps {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package net.thucydides.core.model.samples;

import net.thucydides.core.annotations.Step;
import net.serenitybdd.core.pages.Pages;
import net.thucydides.core.pages.Pages;

public class MyInheritedStepLibrary extends MyBaseStepLibrary {

Expand Down
Loading

0 comments on commit 826c30f

Please sign in to comment.