17
17
18
18
package org .openqa .selenium .support .events ;
19
19
20
+ import static org .hamcrest .CoreMatchers .*;
20
21
import static org .junit .Assert .assertEquals ;
21
22
import static org .junit .Assert .assertSame ;
23
+ import static org .junit .Assert .assertThat ;
22
24
import static org .junit .Assert .assertTrue ;
23
25
import static org .junit .Assert .fail ;
24
26
import static org .mockito .Matchers .any ;
32
34
33
35
import com .google .common .collect .ImmutableMap ;
34
36
37
+ import org .hamcrest .CoreMatchers ;
35
38
import org .junit .Test ;
36
39
import org .junit .runner .RunWith ;
37
40
import org .junit .runners .JUnit4 ;
@@ -254,6 +257,24 @@ public void shouldUnpackElementArgsWhenCallingScripts() {
254
257
verify ((JavascriptExecutor ) mockedDriver ).executeScript ("foo" , element );
255
258
}
256
259
260
+ @ Test
261
+ public void shouldWrapElementFoundWhenCallingScripts () {
262
+ final WebDriver mockedDriver = mock (WebDriver .class ,
263
+ withSettings ().extraInterfaces (JavascriptExecutor .class ));
264
+ final WebElement stubbedElement = mock (WebElement .class );
265
+
266
+ when (((JavascriptExecutor ) mockedDriver ).executeScript ("foo" ))
267
+ .thenReturn (stubbedElement );
268
+
269
+ EventFiringWebDriver testedDriver = new EventFiringWebDriver (mockedDriver );
270
+
271
+ Object res = testedDriver .executeScript ("foo" );
272
+ verify ((JavascriptExecutor ) mockedDriver ).executeScript ("foo" );
273
+ assertThat (res , instanceOf (WebElement .class ));
274
+ assertThat (res , instanceOf (WrapsElement .class ));
275
+ assertSame (stubbedElement , ((WrapsElement ) res ).getWrappedElement ());
276
+ }
277
+
257
278
@ Test
258
279
public void testShouldUnpackListOfElementArgsWhenCallingScripts () {
259
280
final WebDriver mockedDriver = mock (WebDriver .class ,
@@ -276,6 +297,27 @@ public void testShouldUnpackListOfElementArgsWhenCallingScripts() {
276
297
verify ((JavascriptExecutor ) mockedDriver ).executeScript ("foo" , args );
277
298
}
278
299
300
+ @ Test
301
+ public void shouldWrapMultipleElementsFoundWhenCallingScripts () {
302
+ final WebDriver mockedDriver = mock (WebDriver .class ,
303
+ withSettings ().extraInterfaces (JavascriptExecutor .class ));
304
+ final WebElement stubbedElement1 = mock (WebElement .class );
305
+ final WebElement stubbedElement2 = mock (WebElement .class );
306
+
307
+ when (((JavascriptExecutor ) mockedDriver ).executeScript ("foo" ))
308
+ .thenReturn (Arrays .asList (stubbedElement1 , stubbedElement2 ));
309
+
310
+ EventFiringWebDriver testedDriver = new EventFiringWebDriver (mockedDriver );
311
+
312
+ Object res = testedDriver .executeScript ("foo" );
313
+ verify ((JavascriptExecutor ) mockedDriver ).executeScript ("foo" );
314
+ assertThat (res , instanceOf (List .class ));
315
+ List <Object > resList = (List <Object >) res ;
316
+ resList .stream ().forEach (el -> assertTrue (el instanceof WrapsElement ));
317
+ assertSame (stubbedElement1 , ((WrapsElement ) resList .get (0 )).getWrappedElement ());
318
+ assertSame (stubbedElement2 , ((WrapsElement ) resList .get (1 )).getWrappedElement ());
319
+ }
320
+
279
321
@ Test
280
322
public void testShouldUnpackMapOfElementArgsWhenCallingScripts () {
281
323
final WebDriver mockedDriver = mock (WebDriver .class ,
0 commit comments