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