2
2
3
3
import org .dataloader .impl .DefaultCacheMap ;
4
4
import org .dataloader .impl .NoOpValueCache ;
5
+ import org .dataloader .instrumentation .DataLoaderInstrumentation ;
5
6
import org .dataloader .scheduler .BatchLoaderScheduler ;
6
7
import org .dataloader .stats .NoOpStatisticsCollector ;
7
8
import org .dataloader .stats .StatisticsCollector ;
9
+ import org .hamcrest .CoreMatchers ;
8
10
import org .junit .jupiter .api .Test ;
9
11
10
12
import java .util .List ;
@@ -184,4 +186,45 @@ void canBuildViaBuilderOk() {
184
186
assertThat (builtOptions .getStatisticsCollector (),
185
187
equalTo (testStatisticsCollectorSupplier .get ()));
186
188
}
189
+
190
+ @ Test
191
+ void canCopyExistingOptionValuesOnTransform () {
192
+
193
+ DataLoaderInstrumentation instrumentation1 = new DataLoaderInstrumentation () {
194
+ };
195
+ DataLoaderInstrumentation instrumentation2 = new DataLoaderInstrumentation () {
196
+ };
197
+ BatchLoaderContextProvider contextProvider1 = () -> null ;
198
+
199
+ DataLoaderOptions startingOptions = DataLoaderOptions .newOptionsBuilder ().setBatchingEnabled (false )
200
+ .setCachingEnabled (false )
201
+ .setInstrumentation (instrumentation1 )
202
+ .setBatchLoaderContextProvider (contextProvider1 )
203
+ .build ();
204
+
205
+ assertThat (startingOptions .batchingEnabled (), equalTo (false ));
206
+ assertThat (startingOptions .cachingEnabled (), equalTo (false ));
207
+ assertThat (startingOptions .getInstrumentation (), equalTo (instrumentation1 ));
208
+ assertThat (startingOptions .getBatchLoaderContextProvider (), equalTo (contextProvider1 ));
209
+
210
+ DataLoaderOptions newOptions = startingOptions .transform (builder ->
211
+ builder .setBatchingEnabled (true ).setInstrumentation (instrumentation2 ));
212
+
213
+
214
+ // immutable
215
+ assertThat (newOptions , CoreMatchers .not (startingOptions ));
216
+ assertThat (startingOptions .batchingEnabled (), equalTo (false ));
217
+ assertThat (startingOptions .cachingEnabled (), equalTo (false ));
218
+ assertThat (startingOptions .getInstrumentation (), equalTo (instrumentation1 ));
219
+ assertThat (startingOptions .getBatchLoaderContextProvider (), equalTo (contextProvider1 ));
220
+
221
+ // stayed the same
222
+ assertThat (newOptions .cachingEnabled (), equalTo (false ));
223
+ assertThat (newOptions .getBatchLoaderContextProvider (), equalTo (contextProvider1 ));
224
+
225
+ // was changed
226
+ assertThat (newOptions .batchingEnabled (), equalTo (true ));
227
+ assertThat (newOptions .getInstrumentation (), equalTo (instrumentation2 ));
228
+
229
+ }
187
230
}
0 commit comments