package org.sakaiproject.calendar.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Element; import org.junit.After; import org.junit.Before; import org.junit.Test; public class EhCacheRefreshTest { private EhCacheRefresh refresh; private CacheManager manager; private Cache cache; @Before public void setUp() throws Exception { refresh = new EhCacheRefresh(); manager = CacheManager.getInstance(); manager.addCache("test"); cache = manager.getCache("test"); refresh.setCache(cache); } @After public void tearDown() throws Exception { manager.shutdown(); } @Test public void testDeleting() { refresh.setRefresher(new ElementRefresher() { public Object updateElement(Object key, Object value) { // Throw things out of the cache. return null; } }); cache.put(new Element("key", "value")); // Don't actually look at anything. refresh.setMinAge(100); refresh.refresh(); Element actual = cache.get("key"); assertNotNull(actual); assertEquals("value", actual.getValue()); refresh.setMinAge(-100); refresh.refresh(); assertNull(cache.get("key")); } @Test public void testKeeping() { refresh.setRefresher(new ElementRefresher() { public Object updateElement(Object key, Object value) { return "new"; } }); cache.put(new Element("key", "value")); // Check everything. refresh.setMinAge(-1); refresh.refresh(); Element actual = cache.get("key"); assertNotNull(actual); assertEquals("new", actual.getValue()); } }