22
33import org .dataloader .impl .DefaultCacheMap ;
44import org .dataloader .impl .NoOpValueCache ;
5+ import org .dataloader .instrumentation .DataLoaderInstrumentation ;
56import org .dataloader .scheduler .BatchLoaderScheduler ;
67import org .dataloader .stats .NoOpStatisticsCollector ;
78import org .dataloader .stats .StatisticsCollector ;
9+ import org .hamcrest .CoreMatchers ;
810import org .junit .jupiter .api .Test ;
911
1012import java .util .List ;
@@ -184,4 +186,45 @@ void canBuildViaBuilderOk() {
184186 assertThat (builtOptions .getStatisticsCollector (),
185187 equalTo (testStatisticsCollectorSupplier .get ()));
186188 }
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+ }
187230}
0 commit comments