View Javadoc
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 }