1 package com.atlassian.plugin.eventlistener.descriptors;
2
3 import com.atlassian.event.api.EventPublisher;
4 import com.atlassian.plugin.module.ModuleFactory;
5 import org.junit.Rule;
6 import org.junit.Test;
7 import org.junit.contrib.java.lang.system.RestoreSystemProperties;
8 import org.junit.runner.RunWith;
9 import org.mockito.Mock;
10 import org.mockito.junit.MockitoJUnitRunner;
11
12 import static com.atlassian.plugin.eventlistener.descriptors.EventListenerModuleDescriptor.FALLBACK_MODE;
13 import static org.mockito.ArgumentMatchers.any;
14 import static org.mockito.Mockito.verify;
15 import static org.mockito.Mockito.when;
16
17 @RunWith(MockitoJUnitRunner.class)
18 public class EventListenerModuleDescriptorTest {
19 @Rule
20 public final RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties();
21
22 @Mock
23 private ModuleFactory factory;
24 @Mock
25 private Object module;
26 @Mock
27 private EventPublisher publisher;
28
29
30 @Test
31 public void enabled() {
32 final EventListenerModuleDescriptor descriptor = new EventListenerModuleDescriptor(factory, publisher);
33 descriptor.enabled();
34
35 verify(publisher).register(descriptor);
36 }
37
38 @Test
39 public void disabled() {
40 final EventListenerModuleDescriptor descriptor = new EventListenerModuleDescriptor(factory, publisher);
41 descriptor.disabled();
42
43 verify(publisher).unregister(descriptor);
44 }
45
46 @Test
47 public void enabledInFallbackMode() {
48 System.setProperty(FALLBACK_MODE, "true");
49 when(factory.createModule(any(), any())).thenReturn(module);
50
51 final EventListenerModuleDescriptor descriptor = new EventListenerModuleDescriptor(factory, publisher);
52 descriptor.enabled();
53
54 verify(publisher).register(module);
55 }
56
57 @Test
58 public void disabledInFallbackMode() {
59 System.setProperty(FALLBACK_MODE, "true");
60
61 when(factory.createModule(any(), any())).thenReturn(module);
62
63 final EventListenerModuleDescriptor descriptor = new EventListenerModuleDescriptor(factory, publisher);
64 descriptor.disabled();
65
66 verify(publisher).unregister(module);
67 }
68 }