Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.

Commit 0873515

Browse files
committed
Redesigned CurrentWindowTest
1 parent 4011a90 commit 0873515

File tree

1 file changed

+138
-87
lines changed

1 file changed

+138
-87
lines changed

webtester-core/src/test/java/info/novatec/testit/webtester/browser/operations/CurrentWindowTest.java

Lines changed: 138 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -2,150 +2,201 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44
import static org.mockito.Mockito.doReturn;
5+
import static org.mockito.Mockito.mock;
56
import static org.mockito.Mockito.verify;
67

78
import java.io.IOException;
89

910
import org.junit.Before;
1011
import org.junit.Test;
12+
import org.junit.experimental.runners.Enclosed;
1113
import org.junit.runner.RunWith;
1214
import org.mockito.runners.MockitoJUnitRunner;
15+
import org.openqa.selenium.By;
1316
import org.openqa.selenium.Dimension;
17+
import org.openqa.selenium.Keys;
1418
import org.openqa.selenium.Point;
1519
import org.openqa.selenium.WebDriver;
20+
import org.openqa.selenium.WebElement;
1621

1722
import utils.MockFactory;
23+
import utils.TestUtils;
1824
import utils.events.EventCaptor;
1925

26+
import info.novatec.testit.webtester.browser.Browser;
2027
import info.novatec.testit.webtester.browser.WebDriverBrowser;
2128
import info.novatec.testit.webtester.events.EventSystem;
2229
import info.novatec.testit.webtester.events.browser.ClosedWindowEvent;
2330
import info.novatec.testit.webtester.events.browser.MaximizedWindowEvent;
2431
import info.novatec.testit.webtester.events.browser.RefreshedPageEvent;
2532
import info.novatec.testit.webtester.events.browser.SetWindowPositionEvent;
2633
import info.novatec.testit.webtester.events.browser.SetWindowSizeEvent;
34+
import info.novatec.testit.webtester.pagefragments.PageFragment;
2735

2836

29-
@RunWith(MockitoJUnitRunner.class)
37+
@RunWith(Enclosed.class)
3038
public class CurrentWindowTest {
3139

32-
private WebDriver webDriver;
33-
private CurrentWindow cut;
40+
@RunWith(MockitoJUnitRunner.class)
41+
public static abstract class AbstractCurrentWindowTest {
3442

35-
@Before
36-
public void init() throws IOException {
37-
webDriver = MockFactory.webDriver();
38-
cut = new CurrentWindow(WebDriverBrowser.forWebDriver(webDriver).build());
39-
}
43+
WebDriver webDriver;
44+
Browser browser;
4045

41-
/* window handle */
46+
CurrentWindow cut;
4247

43-
@Test
44-
public void handleOfWindowCanBeReturned() {
45-
doReturn("fooBar").when(webDriver).getWindowHandle();
46-
String handle = cut.getHandle();
47-
assertThat(handle).isEqualTo("fooBar");
48-
}
48+
@Before
49+
public void init() throws IOException {
50+
webDriver = MockFactory.webDriver();
51+
browser = WebDriverBrowser.forWebDriver(webDriver).build();
52+
cut = new CurrentWindow(browser);
53+
}
4954

50-
/* refresh */
55+
EventSystem eventSystem() {
56+
return cut.browser().events();
57+
}
5158

52-
@Test
53-
public void refreshingWindowDelegatesToCorrectWebDriverMethod() {
54-
cut.refresh();
55-
verify(navigation()).refresh();
56-
}
59+
WebDriver.Window window() {
60+
return webDriver.manage().window();
61+
}
62+
63+
WebDriver.Navigation navigation() {
64+
return webDriver.navigate();
65+
}
5766

58-
@Test
59-
public void refreshingWindowFiresEvent() {
60-
EventCaptor.capture(eventSystem(), RefreshedPageEvent.class)
61-
.execute(() -> cut.refresh())
62-
.assertEventWasFired();
6367
}
6468

65-
/* maximizing */
69+
public static class GetHandle extends AbstractCurrentWindowTest {
6670

67-
@Test
68-
public void maximizingWindowDelegatesToCorrectWebDriverMethod() {
69-
cut.maximize();
70-
verify(window()).maximize();
71-
}
71+
@Test
72+
public void handleOfWindowCanBeReturned() {
73+
doReturn("fooBar").when(webDriver).getWindowHandle();
74+
String handle = cut.getHandle();
75+
assertThat(handle).isEqualTo("fooBar");
76+
}
7277

73-
@Test
74-
public void maximizingWindowFiresEvent() {
75-
EventCaptor.capture(eventSystem(), MaximizedWindowEvent.class)
76-
.execute(() -> cut.maximize())
77-
.assertEventWasFired();
7878
}
7979

80-
/* position */
80+
public static class Refresh extends AbstractCurrentWindowTest {
8181

82-
@Test
83-
public void settingWindowPositionDelegatesToCorrectWebDriverMethod() {
84-
cut.setPosition(42, 84);
85-
verify(window()).setPosition(new Point(42, 84));
86-
}
82+
@Test
83+
public void refreshingWindowDelegatesToCorrectWebDriverMethod() {
84+
cut.refresh();
85+
verify(navigation()).refresh();
86+
}
87+
88+
@Test
89+
public void refreshingWindowFiresEvent() {
90+
EventCaptor.capture(eventSystem(), RefreshedPageEvent.class).execute(() -> cut.refresh()).assertEventWasFired();
91+
}
8792

88-
@Test
89-
public void settingWindowPositionFiresEvent() {
90-
EventCaptor.capture(eventSystem(), SetWindowPositionEvent.class)
91-
.execute(() -> cut.setPosition(42, 84))
92-
.assertEventWasFired()
93-
.assertEvent(event -> {
94-
assertThat(event.getX()).isEqualTo(42);
95-
assertThat(event.getY()).isEqualTo(84);
96-
});
9793
}
9894

99-
/* size */
95+
public static class Maximize extends AbstractCurrentWindowTest {
10096

101-
@Test
102-
public void settingWindowSizeDelegatesToCorrectWebDriverMethod() {
103-
cut.setSize(1024, 768);
104-
verify(window()).setSize(new Dimension(1024, 768));
105-
}
97+
@Test
98+
public void maximizingWindowDelegatesToCorrectWebDriverMethod() {
99+
cut.maximize();
100+
verify(window()).maximize();
101+
}
102+
103+
@Test
104+
public void maximizingWindowFiresEvent() {
105+
EventCaptor.capture(eventSystem(), MaximizedWindowEvent.class)
106+
.execute(() -> cut.maximize())
107+
.assertEventWasFired();
108+
}
106109

107-
@Test
108-
public void settingWindowSizeFiresEvent() {
109-
EventCaptor.capture(eventSystem(), SetWindowSizeEvent.class)
110-
.execute(() -> cut.setSize(1024, 768))
111-
.assertEventWasFired()
112-
.assertEvent(event -> {
113-
assertThat(event.getWidth()).isEqualTo(1024);
114-
assertThat(event.getHeight()).isEqualTo(768);
115-
});
116110
}
117111

118-
/* closing */
112+
public static class ToggleFullScreen extends AbstractCurrentWindowTest {
119113

120-
@Test
121-
public void closingWindowDelegatesToCorrectWebDriverMethods() {
122-
cut.close();
123-
verify(webDriver).close();
124-
}
114+
@Test
115+
public void togglingFullScreenSendsF11KeyToCurrentPage() {
116+
117+
WebElement element = mock(WebElement.class);
118+
doReturn(element).when(webDriver).findElement(By.tagName("html"));
119+
120+
cut.toggleFullScreen();
121+
122+
verify(element).sendKeys(Keys.F11);
123+
124+
}
125125

126-
@Test
127-
public void closingWindowFiresEvent() {
128-
EventCaptor.capture(eventSystem(), ClosedWindowEvent.class)
129-
.execute(() -> cut.close())
130-
.assertEventWasFired();
131126
}
132127

133-
/* utilities */
128+
public static class SetPosition extends AbstractCurrentWindowTest {
129+
130+
@Test
131+
public void settingWindowPositionDelegatesToCorrectWebDriverMethod() {
132+
cut.setPosition(42, 84);
133+
verify(window()).setPosition(new Point(42, 84));
134+
}
135+
136+
@Test
137+
public void settingWindowPositionFiresEvent() {
138+
EventCaptor.capture(eventSystem(), SetWindowPositionEvent.class)
139+
.execute(() -> cut.setPosition(42, 84))
140+
.assertEventWasFired()
141+
.assertEvent(event -> {
142+
assertThat(event.getX()).isEqualTo(42);
143+
assertThat(event.getY()).isEqualTo(84);
144+
});
145+
}
134146

135-
private EventSystem eventSystem() {
136-
return cut.browser().events();
137147
}
138148

139-
private WebDriver.Window window() {
140-
return webDriver.manage().window();
149+
public static class SetSize extends AbstractCurrentWindowTest {
150+
151+
@Test
152+
public void settingWindowSizeDelegatesToCorrectWebDriverMethod() {
153+
cut.setSize(1024, 768);
154+
verify(window()).setSize(new Dimension(1024, 768));
155+
}
156+
157+
@Test
158+
public void settingWindowSizeFiresEvent() {
159+
EventCaptor.capture(eventSystem(), SetWindowSizeEvent.class)
160+
.execute(() -> cut.setSize(1024, 768))
161+
.assertEventWasFired()
162+
.assertEvent(event -> {
163+
assertThat(event.getWidth()).isEqualTo(1024);
164+
assertThat(event.getHeight()).isEqualTo(768);
165+
});
166+
}
167+
141168
}
142169

143-
private WebDriver.Navigation navigation() {
144-
return webDriver.navigate();
170+
public static class ScrollTo extends AbstractCurrentWindowTest {
171+
172+
@Test
173+
public void correctJavaScriptIsExecuted() {
174+
175+
JavaScriptExecutor javaScript = mock(JavaScriptExecutor.class);
176+
TestUtils.setFieldValue(browser, "javaScript", javaScript);
177+
178+
PageFragment fragment = MockFactory.fragment().build();
179+
cut.scrollTo(fragment);
180+
181+
verify(javaScript).execute("arguments[0].scrollIntoView(true)", fragment);
182+
183+
}
184+
145185
}
146186

147-
private WebDriver.TargetLocator targetLocator() {
148-
return webDriver.switchTo();
187+
public static class Close extends AbstractCurrentWindowTest {
188+
189+
@Test
190+
public void closingWindowDelegatesToCorrectWebDriverMethods() {
191+
cut.close();
192+
verify(webDriver).close();
193+
}
194+
195+
@Test
196+
public void closingWindowFiresEvent() {
197+
EventCaptor.capture(eventSystem(), ClosedWindowEvent.class).execute(() -> cut.close()).assertEventWasFired();
198+
}
199+
149200
}
150201

151202
}

0 commit comments

Comments
 (0)