1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration2.builder;
18
19 import static org.junit.jupiter.api.Assertions.assertNotNull;
20 import static org.mockito.ArgumentMatchers.any;
21 import static org.mockito.ArgumentMatchers.eq;
22 import static org.mockito.Mockito.mock;
23 import static org.mockito.Mockito.verify;
24 import static org.mockito.Mockito.verifyNoMoreInteractions;
25 import static org.mockito.Mockito.when;
26
27 import org.apache.commons.configuration2.Configuration;
28 import org.apache.commons.configuration2.PropertiesConfiguration;
29 import org.apache.commons.configuration2.ex.ConfigurationException;
30 import org.apache.commons.configuration2.reloading.ReloadingController;
31 import org.apache.commons.configuration2.reloading.ReloadingDetector;
32 import org.apache.commons.configuration2.reloading.ReloadingEvent;
33 import org.junit.jupiter.api.Test;
34
35
36
37
38 public class TestReloadingBuilderSupportListener {
39
40
41
42 @Test
43 public void testResetBuilderOnReloadingEvent() {
44 final ReloadingDetector detector = mock(ReloadingDetector.class);
45
46 when(detector.isReloadingRequired()).thenReturn(true);
47
48 final ReloadingController controller = new ReloadingController(detector);
49 final BasicConfigurationBuilder<Configuration> builder = new BasicConfigurationBuilder<>(PropertiesConfiguration.class);
50 final BuilderEventListenerImpl builderListener = new BuilderEventListenerImpl();
51 builder.addEventListener(ConfigurationBuilderEvent.ANY, builderListener);
52
53 final ReloadingBuilderSupportListener listener = ReloadingBuilderSupportListener.connect(builder, controller);
54 assertNotNull(listener);
55 controller.checkForReloading(null);
56 builderListener.nextEvent(ConfigurationBuilderEvent.RESET);
57 builderListener.assertNoMoreEvents();
58 }
59
60
61
62
63 @Test
64 public void testResetReloadingStateOnResultCreation() throws ConfigurationException {
65 final ReloadingController controller = mock(ReloadingController.class);
66
67 final BasicConfigurationBuilder<Configuration> builder = new BasicConfigurationBuilder<>(PropertiesConfiguration.class);
68
69 final ReloadingBuilderSupportListener listener = ReloadingBuilderSupportListener.connect(builder, controller);
70 assertNotNull(listener);
71 builder.getConfiguration();
72
73 verify(controller).addEventListener(eq(ReloadingEvent.ANY), any());
74 verify(controller).resetReloadingState();
75 verifyNoMoreInteractions(controller);
76 }
77 }