View Javadoc

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 }