Skip to content

Commit 0db6a30

Browse files
The refactoring of widget tests: The final commit
- all test were added - checkstyle issues were fixed
1 parent 5c960a4 commit 0db6a30

File tree

12 files changed

+318
-88
lines changed

12 files changed

+318
-88
lines changed

src/main/java/io/appium/java_client/ios/PerformsTouchID.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
package io.appium.java_client.ios;
1818

19-
import static io.appium.java_client.ios.IOSMobileCommandHelper.touchIdCommand;
2019
import static io.appium.java_client.ios.IOSMobileCommandHelper.toggleTouchIdEnrollmentCommand;
20+
import static io.appium.java_client.ios.IOSMobileCommandHelper.touchIdCommand;
2121

2222
import io.appium.java_client.CommandExecutionHelper;
2323
import io.appium.java_client.ExecutesMethod;

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/AbstractStubWebDriver.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
package io.appium.java_client.pagefactory_tests.widget.tests;
22

3+
import static com.google.common.collect.ImmutableList.of;
4+
import static io.appium.java_client.remote.AutomationName.APPIUM;
5+
import static io.appium.java_client.remote.AutomationName.IOS_XCUI_TEST;
6+
import static io.appium.java_client.remote.AutomationName.SELENDROID;
7+
import static io.appium.java_client.remote.MobilePlatform.ANDROID;
8+
import static io.appium.java_client.remote.MobilePlatform.IOS;
9+
import static io.appium.java_client.remote.MobilePlatform.WINDOWS;
10+
import static org.apache.commons.lang3.StringUtils.EMPTY;
11+
312
import io.appium.java_client.HasSessionDetails;
413
import org.openqa.selenium.By;
514
import org.openqa.selenium.Cookie;
@@ -13,15 +22,6 @@
1322
import java.util.Set;
1423
import java.util.concurrent.TimeUnit;
1524

16-
import static com.google.common.collect.ImmutableList.of;
17-
import static io.appium.java_client.remote.AutomationName.APPIUM;
18-
import static io.appium.java_client.remote.AutomationName.IOS_XCUI_TEST;
19-
import static io.appium.java_client.remote.AutomationName.SELENDROID;
20-
import static io.appium.java_client.remote.MobilePlatform.ANDROID;
21-
import static io.appium.java_client.remote.MobilePlatform.IOS;
22-
import static io.appium.java_client.remote.MobilePlatform.WINDOWS;
23-
import static org.apache.commons.lang3.StringUtils.EMPTY;
24-
2525
public abstract class AbstractStubWebDriver implements WebDriver, HasSessionDetails {
2626
@Override
2727
public Response execute(String driverCommand, Map<String, ?> parameters) {

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/AbstractWidget.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
package io.appium.java_client.pagefactory_tests.widget.tests;
22

3+
import static com.google.common.collect.ImmutableList.of;
4+
35
import io.appium.java_client.pagefactory.Widget;
46
import org.openqa.selenium.WebElement;
57

68
import java.util.List;
79

8-
public abstract class AbstractWidget extends Widget {
10+
public class AbstractWidget extends Widget {
911
protected AbstractWidget(WebElement element) {
1012
super(element);
1113
}
1214

13-
public abstract <T extends Widget> T getSubWidget();
15+
public <T extends Widget> T getSubWidget() {
16+
return null;
17+
}
1418

15-
public abstract <T extends Widget> List<T> getSubWidgets();
19+
public <T extends Widget> List<T> getSubWidgets() {
20+
return of();
21+
}
1622

1723
public String toString() {
1824
return getWrappedElement().toString();

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/ExtendedWidgetTest.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
package io.appium.java_client.pagefactory_tests.widget.tests;
22

3-
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
3+
import static java.util.stream.Collectors.toList;
4+
import static org.hamcrest.Matchers.contains;
5+
import static org.hamcrest.Matchers.containsString;
6+
import static org.junit.Assert.assertThat;
7+
48
import org.junit.Test;
59
import org.openqa.selenium.By;
610
import org.openqa.selenium.WebDriver;
711

812
import java.util.List;
913

10-
import static java.util.stream.Collectors.toList;
11-
import static org.hamcrest.Matchers.contains;
12-
import static org.hamcrest.Matchers.containsString;
13-
import static org.junit.Assert.assertThat;
14-
import static org.openqa.selenium.support.PageFactory.initElements;
15-
1614
public abstract class ExtendedWidgetTest extends WidgetTest {
1715

1816

@@ -29,7 +27,8 @@ protected ExtendedWidgetTest(ExtendedApp app, WebDriver driver) {
2927
@Test
3028
public abstract void checkTheLocatorOverridingOnAWidget();
3129

32-
protected static void defaultTest(AbstractWidget single, List<AbstractWidget> multiple, By rootLocator, By subLocator) {
30+
protected static void defaultTest(AbstractWidget single, List<AbstractWidget> multiple, By rootLocator,
31+
By subLocator) {
3332

3433
assertThat(single.toString(), containsString(rootLocator.toString()));
3534
assertThat(multiple.stream().map(AbstractWidget::toString).collect(toList()),

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/StubWebElement.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package io.appium.java_client.pagefactory_tests.widget.tests;
22

3+
import static com.google.common.collect.ImmutableList.of;
34

4-
import org.openqa.selenium.*;
5+
import org.openqa.selenium.By;
6+
import org.openqa.selenium.Dimension;
7+
import org.openqa.selenium.OutputType;
8+
import org.openqa.selenium.Point;
9+
import org.openqa.selenium.Rectangle;
10+
import org.openqa.selenium.WebDriver;
11+
import org.openqa.selenium.WebDriverException;
12+
import org.openqa.selenium.WebElement;
513
import org.openqa.selenium.internal.WrapsDriver;
614

715
import java.util.List;
816

9-
import static com.google.common.collect.ImmutableList.of;
10-
11-
public class StubWebElement implements WebElement, WrapsDriver{
17+
public class StubWebElement implements WebElement, WrapsDriver {
1218
private final WebDriver driver;
1319
private final By by;
1420

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/WidgetTest.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
package io.appium.java_client.pagefactory_tests.widget.tests;
22

3+
import static org.openqa.selenium.support.PageFactory.initElements;
4+
35
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
46
import org.junit.Test;
5-
import org.openqa.selenium.By;
67
import org.openqa.selenium.WebDriver;
78

8-
import java.util.List;
9-
10-
import static java.util.stream.Collectors.toList;
11-
import static org.hamcrest.Matchers.contains;
12-
import static org.hamcrest.Matchers.containsString;
13-
import static org.junit.Assert.assertThat;
14-
import static org.openqa.selenium.support.PageFactory.initElements;
15-
169
public abstract class WidgetTest {
1710

1811
protected final AbstractApp app;

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/android/AndroidWidgetTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public void checkAnExtendedWidget() {
3838
public void checkTheLocatorOverridingOnAWidget() {
3939
defaultTest(((ExtendedApp) app).getExtendedWidgetWithOverriddenLocators(),
4040
((ExtendedApp) app).getExtendedWidgetsWithOverriddenLocators(),
41-
AndroidUIAutomator(ANDROID_EXTERNALLY_DEFINED_WIDGET_LOCATOR), AndroidUIAutomator(ANDROID_SUB_WIDGET_LOCATOR));
41+
AndroidUIAutomator(ANDROID_EXTERNALLY_DEFINED_WIDGET_LOCATOR),
42+
AndroidUIAutomator(ANDROID_SUB_WIDGET_LOCATOR));
4243
}
4344
}

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/combined/CombinedApp.java

Lines changed: 0 additions & 41 deletions
This file was deleted.

src/test/java/io/appium/java_client/pagefactory_tests/widget/tests/combined/CombinedAppTest.java

Lines changed: 81 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import static org.hamcrest.Matchers.equalTo;
77
import static org.junit.Assert.assertThat;
88

9-
import io.appium.java_client.pagefactory.Widget;
9+
import io.appium.java_client.pagefactory.OverrideWidget;
1010
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractApp;
1111
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractStubWebDriver;
1212
import io.appium.java_client.pagefactory_tests.widget.tests.AbstractWidget;
@@ -24,16 +24,31 @@
2424
@RunWith(Parameterized.class)
2525
public class CombinedAppTest extends WidgetTest {
2626

27+
/**
28+
* Test data generation.
29+
*
30+
* @return test parameters
31+
*/
2732
@Parameterized.Parameters
2833
public static Collection<Object[]> data() {
2934
return asList(new Object[][] {
30-
{ new CombinedApp(), new AbstractStubWebDriver.StubAndroidDriver(), DefaultAndroidWidget.class},
31-
{ new CombinedApp(), new AbstractStubWebDriver.StubSelendroidDriver(), DefaultSelendroidWidget.class},
32-
{ new CombinedApp(), new AbstractStubWebDriver.StubIOSDriver(), DefaultIosWidget.class},
33-
{ new CombinedApp(), new AbstractStubWebDriver.StubIOSXCUITDriver(), DefaultIosXCUITWidget.class},
34-
{ new CombinedApp(), new AbstractStubWebDriver.StubWindowsDriver(), DefaultWindowsWidget.class},
35-
{ new CombinedApp(), new AbstractStubWebDriver.StubBrowserDriver(), DefaultFindByWidget.class},
36-
{ new CombinedApp(), new AbstractStubWebDriver.StubAndroidBrowserOrWebViewDriver(), DefaultFindByWidget.class}
35+
{new CombinedApp(), new AbstractStubWebDriver.StubAndroidDriver(), DefaultAndroidWidget.class},
36+
{new CombinedApp(), new AbstractStubWebDriver.StubSelendroidDriver(), DefaultSelendroidWidget.class},
37+
{new CombinedApp(), new AbstractStubWebDriver.StubIOSDriver(), DefaultIosWidget.class},
38+
{new CombinedApp(), new AbstractStubWebDriver.StubIOSXCUITDriver(), DefaultIosXCUITWidget.class},
39+
{new CombinedApp(), new AbstractStubWebDriver.StubWindowsDriver(), DefaultWindowsWidget.class},
40+
{new CombinedApp(), new AbstractStubWebDriver.StubBrowserDriver(), DefaultFindByWidget.class},
41+
{new CombinedApp(), new AbstractStubWebDriver.StubAndroidBrowserOrWebViewDriver(),
42+
DefaultFindByWidget.class},
43+
{new PartiallyCombinedApp(), new AbstractStubWebDriver.StubAndroidDriver(), DefaultAndroidWidget.class},
44+
{new PartiallyCombinedApp(), new AbstractStubWebDriver.StubSelendroidDriver(),
45+
DefaultSelendroidWidget.class},
46+
{new PartiallyCombinedApp(), new AbstractStubWebDriver.StubIOSDriver(), AbstractWidget.class},
47+
{new PartiallyCombinedApp(), new AbstractStubWebDriver.StubIOSXCUITDriver(), AbstractWidget.class},
48+
{new PartiallyCombinedApp(), new AbstractStubWebDriver.StubWindowsDriver(), AbstractWidget.class},
49+
{new PartiallyCombinedApp(), new AbstractStubWebDriver.StubBrowserDriver(), DefaultFindByWidget.class},
50+
{new PartiallyCombinedApp(), new AbstractStubWebDriver.StubAndroidBrowserOrWebViewDriver(),
51+
DefaultFindByWidget.class}
3752
});
3853
}
3954

@@ -50,9 +65,66 @@ public void checkACommonWidget() {
5065
app.getWidget().getSelfReference().getClass(),
5166
equalTo(widgetClass));
5267

53-
List<Class<?>> classes = app.getWidgets().stream().map(abstractWidget -> abstractWidget.getSelfReference().getClass())
68+
List<Class<?>> classes = app.getWidgets().stream().map(abstractWidget -> abstractWidget
69+
.getSelfReference().getClass())
5470
.collect(toList());
5571
assertThat(classes,
5672
contains(widgetClass, widgetClass));
5773
}
74+
75+
public static class CombinedApp implements AbstractApp {
76+
77+
@OverrideWidget(html = DefaultFindByWidget.class,
78+
androidUIAutomator = DefaultAndroidWidget.class,
79+
selendroid = DefaultSelendroidWidget.class,
80+
iOSUIAutomation = DefaultIosWidget.class,
81+
iOSXCUITAutomation = DefaultIosXCUITWidget.class,
82+
windowsAutomation = DefaultWindowsWidget.class
83+
)
84+
private AbstractWidget singleWidget;
85+
86+
@OverrideWidget(html = DefaultFindByWidget.class,
87+
androidUIAutomator = DefaultAndroidWidget.class,
88+
selendroid = DefaultSelendroidWidget.class,
89+
iOSUIAutomation = DefaultIosWidget.class,
90+
iOSXCUITAutomation = DefaultIosXCUITWidget.class,
91+
windowsAutomation = DefaultWindowsWidget.class
92+
)
93+
private List<AbstractWidget> multipleWidget;
94+
95+
@Override
96+
public AbstractWidget getWidget() {
97+
return singleWidget;
98+
}
99+
100+
@Override
101+
public List<AbstractWidget> getWidgets() {
102+
return multipleWidget;
103+
}
104+
}
105+
106+
public static class PartiallyCombinedApp implements AbstractApp {
107+
108+
@OverrideWidget(html = DefaultFindByWidget.class,
109+
androidUIAutomator = DefaultAndroidWidget.class,
110+
selendroid = DefaultSelendroidWidget.class
111+
)
112+
private AbstractWidget singleWidget;
113+
114+
@OverrideWidget(html = DefaultFindByWidget.class,
115+
androidUIAutomator = DefaultAndroidWidget.class,
116+
selendroid = DefaultSelendroidWidget.class
117+
)
118+
private List<AbstractWidget> multipleWidget;
119+
120+
@Override
121+
public AbstractWidget getWidget() {
122+
return singleWidget;
123+
}
124+
125+
@Override
126+
public List<AbstractWidget> getWidgets() {
127+
return multipleWidget;
128+
}
129+
}
58130
}

0 commit comments

Comments
 (0)