1 package com.atlassian.cache.ehcache.wrapper;
2
3 import com.atlassian.cache.CacheLoader;
4 import org.junit.Before;
5 import org.junit.Rule;
6 import org.junit.Test;
7 import org.mockito.Mock;
8 import org.mockito.junit.MockitoJUnit;
9 import org.mockito.junit.MockitoRule;
10
11 import static org.junit.Assert.*;
12 import static org.mockito.ArgumentMatchers.same;
13 import static org.mockito.Mockito.verify;
14 import static org.mockito.Mockito.verifyNoMoreInteractions;
15 import static org.mockito.Mockito.when;
16
17 public class ValueProcessorAtlassianCacheLoaderDecoratorTest {
18
19 @Rule
20 public MockitoRule mockitoRule = MockitoJUnit.rule();
21
22 @Mock
23 private CacheLoader mockLoader;
24
25 private ValueProcessorAtlassianCacheLoaderDecorator tested;
26
27 @Before
28 public void init() {
29 tested = new ValueProcessorAtlassianCacheLoaderDecorator(mockLoader, WrapperTestUtils.getValueProcessor());
30 }
31
32 @SuppressWarnings({"Duplicates", "unchecked"})
33 @Test
34 public void testLoadShouldUnwrapKeyAndWrapResult() {
35 Object key = new Object();
36 Object value = new Object();
37
38 when(mockLoader.load(key)).thenReturn(value);
39
40 Object loaded = tested.load(new MockWrappedValue(key));
41
42 verify(mockLoader).load(same(key));
43 verifyNoMoreInteractions(mockLoader);
44 assertSame(MockWrappedValue.class, loaded.getClass());
45 assertSame(value, ((MockWrappedValue) loaded).getValue());
46 }
47 }