8000 resultSQO should have targetSQO as previous + resultSQO should have s… · seleniumQuery/seleniumQuery@b56984e · GitHub
[go: up one dir, main page]

Skip to content

Commit b56984e

Browse files
committed
resultSQO should have targetSQO as previous + resultSQO should have same SQFunctions as targetSQO - #97
1 parent d3298e8 commit b56984e

File tree

4 files changed

+44
-9
lines changed

4 files changed

+44
-9
lines changed

src/main/java/io/github/seleniumquery/SeleniumQueryObject.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -644,4 +644,7 @@ public SeleniumQueryObject filter(Predicate<WebElement> filterFunction) {
644644
return seleniumQueryFunctions.filterFunction(this, filterFunction);
645645
}
646646

647+
public SeleniumQueryFunctions getSeleniumQueryFunctions() {
648+
return seleniumQueryFunctions;
649+
}
647650
}

src/main/java/io/github/seleniumquery/functions/jquery/traversing/filtering/FilterFunction.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,16 @@
2020
import io.github.seleniumquery.SeleniumQueryObject;
2121
import org.openqa.selenium.WebElement;
2222

23+
import static io.github.seleniumquery.InternalSeleniumQueryObjectFactory.instance;
24+
2325
public class FilterFunction {
2426

2527
public SeleniumQueryObject filter(SeleniumQueryObject seleniumQueryObject, Predicate<WebElement> filterFunction) {
26-
return seleniumQueryObject;
28+
return instance().create(seleniumQueryObject.getSeleniumQueryFunctions(),
29+
seleniumQueryObject.getWebDriver(),
30+
seleniumQueryObject.getBy(),
31+
seleniumQueryObject.get(),
32+
seleniumQueryObject);
2733
}
2834

2935
}

src/test/java/io/github/seleniumquery/functions/jquery/traversing/filtering/FilterFunctionTest.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@
2020
import io.github.seleniumquery.SeleniumQueryObject;
2121
import org.junit.Test;
2222
import org.openqa.selenium.WebElement;
23-
import testinfrastructure.testdouble.Dummies;
24-
import testinfrastructure.testdouble.SeleniumQueryObjectMother;
2523

24+
import static org.hamcrest.CoreMatchers.is;
2625
import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
2726
import static org.junit.Assert.assertThat;
27+
import static testinfrastructure.testdouble.Dummies.createDummyWebElement;
28+
import static testinfrastructure.testdouble.SeleniumQueryObjectMother.createStubSeleniumQueryObject;
29+
import static testinfrastructure.testdouble.SeleniumQueryObjectMother.createStubSeleniumQueryObjectWithElements;
2830

2931
public class FilterFunctionTest {
3032

@@ -33,15 +35,35 @@ public class FilterFunctionTest {
3335
FilterFunction filterFunction = new FilterFunction();
3436

3537
@Test
36-
public void filter_null_should_return_same_elements() {
38+
public void null_predicate__should_return_same_elements() {
3739
// given
38-
WebElement dummyWebElement = Dummies.createDummyWebElement();
39-
WebElement dummyWebElement2 = Dummies.createDummyWebElement();
40-
SeleniumQueryObject sqo = SeleniumQueryObjectMother.createStubSeleniumQueryObjectWithElements(dummyWebElement, dummyWebElement2);
40+
WebElement dummyWebElement = createDummyWebElement();
41+
WebElement dummyWebElement2 = createDummyWebElement();
42+
SeleniumQueryObject targetSQO = createStubSeleniumQueryObjectWithElements(dummyWebElement, dummyWebElement2);
4143
// when
42-
SeleniumQueryObject filteredObject = filterFunction.filter(sqo, NULL_PREDICATE);
44+
SeleniumQueryObject resultSQO = filterFunction.filter(targetSQO, NULL_PREDICATE);
4345
// then
44-
assertThat(filteredObject.get(), containsInAnyOrder(dummyWebElement, dummyWebElement2));
46+
assertThat(resultSQO.get(), containsInAnyOrder(dummyWebElement, dummyWebElement2));
47+
}
48+
49+
@Test
50+
public void resultSQO_should_have_targetSQO_as_previous_object() {
51+
// given
52+
SeleniumQueryObject targetSQO = createStubSeleniumQueryObject();
53+
// when
54+
SeleniumQueryObject resultSQO = filterFunction.filter(targetSQO, NULL_PREDICATE);
55+
// then
56+
assertThat(resultSQO.end(), is(targetSQO));
57+
}
58+
59+
@Test
60+
public void resultSQO_should_have_same_SQFunctions_as_targetSQO() {
61+
// given
62+
SeleniumQueryObject targetSQO = createStubSeleniumQueryObject();
63+
// when
64+
SeleniumQueryObject resultSQO = filterFunction.filter(targetSQO, NULL_PREDICATE);
65+
// then
66+
assertThat(resultSQO.getSeleniumQueryFunctions(), is(targetSQO.getSeleniumQueryFunctions()));
4567
}
4668

4769
}

src/test/java/testinfrastructure/testdouble/SeleniumQueryObjectMother.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ public static SeleniumQueryObject createStubSeleniumQueryObjectWithElements(WebE
4242
return createStubSeleniumQueryObject(new SeleniumQueryFunctions(), asList(elements));
4343
}
4444

45+
public static SeleniumQueryObject createStubSeleniumQueryObject() {
46+
return createStubSeleniumQueryObjectWithElements();
47+
}
48+
4549
/**
4650
* Creates a "smart" dummy {@link SeleniumQueryObject}. It's goal is to be a mere placeholder in a test
4751
* fixture. It is "smart" because any method call to it will throw an exception (which indicates the dummy

0 commit comments

Comments
 (0)
0