1 package com.atlassian.cache.impl;
2
3 import com.atlassian.cache.CacheEntryListener;
4 import org.junit.Test;
5 import org.junit.runner.RunWith;
6 import org.mockito.runners.MockitoJUnitRunner;
7
8 import static com.atlassian.cache.impl.CacheEntryEventMatcher.event;
9 import static org.mockito.Mockito.mock;
10 import static org.mockito.Mockito.verify;
11 import static org.mockito.Mockito.verifyNoMoreInteractions;
12
13 @RunWith(MockitoJUnitRunner.class)
14 public class DefaultCacheEntryListenerSupportTest
15 {
16 @Test
17 public void testAdd()
18 {
19 DefaultCacheEntryListenerSupport<String, String> listenerSupport = new DefaultCacheEntryListenerSupport<String, String>();
20
21 listenerSupport.notifyAdd("ADD_KEY", "ADD_VALUE");
22
23 CacheEntryListener<String, String> listener = mock(CacheEntryListener.class);
24 listenerSupport.add(listener, true);
25
26 listenerSupport.notifyAdd("ADD_KEY", "ADD_VALUE");
27
28 verify(listener).onAdd(event("ADD_KEY", "ADD_VALUE", null));
29 verifyNoMoreInteractions(listener);
30 }
31
32 @Test
33 public void testRemove()
34 {
35 DefaultCacheEntryListenerSupport<String, String> listenerSupport = new DefaultCacheEntryListenerSupport<String, String>();
36
37 listenerSupport.notifyAdd("ADD_KEY", "ADD_VALUE");
38
39 CacheEntryListener<String, String> listener = mock(CacheEntryListener.class);
40 listenerSupport.add(listener, true);
41
42 listenerSupport.notifyAdd("ADD_KEY", "ADD_VALUE");
43
44 listenerSupport.remove(listener);
45
46 listenerSupport.notifyAdd("ADD_KEY", "ADD_VALUE");
47
48 verify(listener).onAdd(event("ADD_KEY", "ADD_VALUE", null));
49 verifyNoMoreInteractions(listener);
50 }
51
52 @Test
53 public void testNotifyAdd()
54 {
55 DefaultCacheEntryListenerSupport<String, String> listenerSupport = new DefaultCacheEntryListenerSupport<String, String>();
56
57 CacheEntryListener<String, String> listener = mock(CacheEntryListener.class);
58 listenerSupport.add(listener, true);
59
60 listenerSupport.notifyAdd("ADD_KEY", "ADD_VALUE");
61
62 verify(listener).onAdd(event("ADD_KEY", "ADD_VALUE", null));
63 verifyNoMoreInteractions(listener);
64 }
65
66 @Test
67 public void testNotifyEvict()
68 {
69 DefaultCacheEntryListenerSupport<String, String> listenerSupport = new DefaultCacheEntryListenerSupport<String, String>();
70
71 CacheEntryListener<String, String> listener = mock(CacheEntryListener.class);
72 listenerSupport.add(listener, true);
73
74 listenerSupport.notifyEvict("EVICT_KEY", "EVICT_OLD_VALUE");
75
76 verify(listener).onEvict(event("EVICT_KEY", null, "EVICT_OLD_VALUE"));
77 verifyNoMoreInteractions(listener);
78 }
79
80 @Test
81 public void testNotifyRemove()
82 {
83 DefaultCacheEntryListenerSupport<String, String> listenerSupport = new DefaultCacheEntryListenerSupport<String, String>();
84
85 CacheEntryListener<String, String> listener = mock(CacheEntryListener.class);
86 listenerSupport.add(listener, true);
87
88 listenerSupport.notifyRemove("REMOVE_KEY", "REMOVE_OLD_VALUE");
89
90 verify(listener).onRemove(event("REMOVE_KEY", null, "REMOVE_OLD_VALUE"));
91 verifyNoMoreInteractions(listener);
92 }
93
94 @Test
95 public void testNotifyUpdate()
96 {
97 DefaultCacheEntryListenerSupport<String, String> listenerSupport = new DefaultCacheEntryListenerSupport<String, String>();
98
99 CacheEntryListener<String, String> listener = mock(CacheEntryListener.class);
100 listenerSupport.add(listener, true);
101
102 listenerSupport.notifyUpdate("UPDATE_KEY", "UPDATE_VALUE", "UPDATE_OLD_VALUE");
103
104 verify(listener).onUpdate(event("UPDATE_KEY", "UPDATE_VALUE", "UPDATE_OLD_VALUE"));
105 verifyNoMoreInteractions(listener);
106 }
107
108 @Test
109 public void testNotifyAll()
110 {
111 DefaultCacheEntryListenerSupport<String, String> listenerSupport = new DefaultCacheEntryListenerSupport<String, String>();
112
113 CacheEntryListener<String, String> listener = mock(CacheEntryListener.class);
114 listenerSupport.add(listener, true);
115
116 CacheEntryListener<String, String> listener2 = mock(CacheEntryListener.class);
117 listenerSupport.add(listener2, true);
118
119 listenerSupport.notifyAdd("ADD_KEY", "ADD_VALUE");
120 listenerSupport.notifyEvict("EVICT_KEY", "EVICT_OLD_VALUE");
121 listenerSupport.notifyRemove("REMOVE_KEY", "REMOVE_OLD_VALUE");
122 listenerSupport.notifyUpdate("UPDATE_KEY", "UPDATE_VALUE", "UPDATE_OLD_VALUE");
123
124 verify(listener).onAdd(event("ADD_KEY", "ADD_VALUE", null));
125 verify(listener).onEvict(event("EVICT_KEY", null, "EVICT_OLD_VALUE"));
126 verify(listener).onRemove(event("REMOVE_KEY", null, "REMOVE_OLD_VALUE"));
127 verify(listener).onUpdate(event("UPDATE_KEY", "UPDATE_VALUE", "UPDATE_OLD_VALUE"));
128 verifyNoMoreInteractions(listener);
129
130 verify(listener2).onAdd(event("ADD_KEY", "ADD_VALUE", null));
131 verify(listener2).onEvict(event("EVICT_KEY", null, "EVICT_OLD_VALUE"));
132 verify(listener2).onRemove(event("REMOVE_KEY", null, "REMOVE_OLD_VALUE"));
133 verify(listener2).onUpdate(event("UPDATE_KEY", "UPDATE_VALUE", "UPDATE_OLD_VALUE"));
134 verifyNoMoreInteractions(listener2);
135 }
136 }