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

Commit 6cfc339

Browse files
slu-itAxel Schüssler
authored andcommitted
Added Wait.untilSupplied(supplier) implementation
This is done in order to support calls like this: Wait.untilSupplied(() -> streamOfObjects()).has(stream -> stream.count() > 0) Which are common when waiting for a specific conditions within a @PostConstruct method
1 parent fc288c6 commit 6cfc339

File tree

4 files changed

+61
-7
lines changed

4 files changed

+61
-7
lines changed

webtester-core/src/main/java/info/novatec/testit/webtester/waiting/Wait.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,22 @@ public static <T> WaitUntil<T> until(T object) {
8888
return new WaitUntil<>(waiter.get(), new WaitConfig(), object);
8989
}
9090

91+
/**
92+
* Creates a {@link WaitUntil} with the default timeout configuration of {@link WaitConfig} for the given object {@link
93+
* Supplier}.
94+
*
95+
* @param objectSupplier the object supplier for the wait until operation
96+
* @param <T> the type of the object
97+
* @return the fluent wait instance
98+
* @see Wait
99+
* @see WaitUntil
100+
* @see WaitConfig
101+
* @since 2.0
102+
*/
103+
public static <T> WaitUntil<T> untilSupplied(Supplier<T> objectSupplier) {
104+
return new WaitUntil<>(waiter.get(), new WaitConfig(), objectSupplier);
105+
}
106+
91107
/**
92108
* Creates a {@link WaitUntil} with the default timeout from the given {@link PageFragment}'s configuration.
93109
*

webtester-core/src/main/java/info/novatec/testit/webtester/waiting/WaitUntil.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package info.novatec.testit.webtester.waiting;
22

3+
import java.util.function.Supplier;
4+
35
import lombok.AccessLevel;
4-
import lombok.AllArgsConstructor;
56
import lombok.Getter;
67
import lombok.NonNull;
78

@@ -16,15 +17,24 @@
1617
* @since 2.0
1718
*/
1819
@Getter(AccessLevel.PACKAGE)
19-
@AllArgsConstructor(access = AccessLevel.PACKAGE)
2020
public class WaitUntil<T> {
2121

2222
@NonNull
2323
private final Waiter waiter;
2424
@NonNull
2525
private final WaitConfig config;
2626
@NonNull
27-
private final T object;
27+
private final Supplier<T> objectSupplier;
28+
29+
public WaitUntil(Waiter waiter, WaitConfig config, T object) {
30+
this(waiter, config, () -> object);
31+
}
32+
33+
public WaitUntil(Waiter waiter, WaitConfig config, Supplier<T> objectSupplier) {
34+
this.waiter = waiter;
35+
this.config = config;
36+
this.objectSupplier = objectSupplier;
37+
}
2838

2939
/**
3040
* Waits until the given condition is met. A set of default conditions can be initialized from {@link Conditions}.
@@ -97,7 +107,7 @@ public WaitUntil<T> not(Condition<? super T> condition) throws TimeoutException
97107
}
98108

99109
private WaitUntil<T> doWait(Condition<? super T> condition) {
100-
waiter.waitUntil(config, () -> condition.test(object));
110+
waiter.waitUntil(config, () -> condition.test(objectSupplier.get()));
101111
return this;
102112
}
103113

webtester-core/src/test/java/info/novatec/testit/webtester/waiting/ConfiguredWaitTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void waitUntilIsCreatedWithSameConfiguration() {
4848
@Test
4949
public void waitUntilIsCreatedForObject() {
5050
WaitUntil<Object> waitUntil = cut.until(object);
51-
assertThat(waitUntil.getObject()).isSameAs(object);
51+
assertThat(waitUntil.getObjectSupplier().get()).isSameAs(object);
5252
}
5353

5454
}

webtester-core/src/test/java/info/novatec/testit/webtester/waiting/WaitTest.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,35 @@ public void waitUntilIsCreatedWithDefaultConfiguration() {
101101
@Test
102102
public void waitUntilIsCreatedForObject() {
103103
WaitUntil<Object> until = Wait.until(object);
104-
assertThat(until.getObject()).isSameAs(object);
104+
assertThat(until.getObjectSupplier().get()).isSameAs(object);
105+
}
106+
107+
}
108+
109+
public static class Until_ObjectSupplier extends AbstractWaitTest {
110+
111+
@Mock
112+
Object object;
113+
114+
@Test
115+
public void waitUntilIsCreatedWithSameWaiter() {
116+
WaitUntil<Object> until = Wait.untilSupplied(() -> object);
117+
assertThat(until.getWaiter()).isSameAs(waiter);
118+
}
119+
120+
@Test
121+
public void waitUntilIsCreatedWithDefaultConfiguration() {
122+
WaitUntil<Object> until = Wait.untilSupplied(() -> object);
123+
WaitConfig config = until.getConfig();
124+
assertThat(config.getTimeout()).isEqualTo(WaitConfig.DEFAULT_TIMEOUT);
125+
assertThat(config.getTimeUnit()).isEqualTo(WaitConfig.DEFAULT_TIME_UNIT);
126+
assertThat(config.getInterval()).isEqualTo(WaitConfig.DEFAULT_INTERVAL);
127+
}
128+
129+
@Test
130+
public void waitUntilIsCreatedForObject() {
131+
WaitUntil<Object> until = Wait.untilSupplied(() -> object);
132+
assertThat(until.getObjectSupplier().get()).isSameAs(object);
105133
}
106134

107135
}
@@ -141,7 +169,7 @@ public void waitUntilIsCreatedWithFragmentsConfiguration() {
141169
@Test
142170
public void waitUntilIsCreatedForPageFragment() {
143171
WaitUntil<PageFragment> until = Wait.until(fragment);
144-
assertThat(until.getObject()).isSameAs(fragment);
172+
assertThat(until.getObjectSupplier().get()).isSameAs(fragment);
145173
}
146174

147175
}

0 commit comments

Comments
 (0)