@Test public void multipleCacheManagerBeans_implementsCachingConfigurer() { load(MultiCacheManagerConfigurer.class); // does not throw }
@Test public void singleCacheManagerBean() { load(SingleCacheManagerConfig.class); }
@Test public void multipleCacheManagerBeans() { try { load(MultiCacheManagerConfig.class); } catch (IllegalStateException ex) { assertTrue(ex.getMessage().contains("bean of type CacheManager")); } }
@Test public void noCacheManagerBeans() { try { load(EmptyConfig.class); } catch (IllegalStateException ex) { assertTrue(ex.getMessage().contains("no bean of type CacheManager")); } }
@Test public void testKeyStrategy() { load(EnableCachingConfig.class); AnnotationCacheAspect aspect = this.ctx.getBean(AnnotationCacheAspect.class); assertSame(this.ctx.getBean("keyGenerator", KeyGenerator.class), aspect.getKeyGenerator()); }
@Test public void testCacheErrorHandler() { load(EnableCachingConfig.class); AnnotationCacheAspect aspect = this.ctx.getBean(AnnotationCacheAspect.class); assertSame(this.ctx.getBean("errorHandler", CacheErrorHandler.class), aspect.getErrorHandler()); }
@Test public void bothSetOnlyResolverIsUsed() { load(FullCachingConfig.class); AnnotationCacheAspect aspect = this.ctx.getBean(AnnotationCacheAspect.class); assertSame(this.ctx.getBean("cacheResolver"), aspect.getCacheResolver()); assertSame(this.ctx.getBean("keyGenerator"), aspect.getKeyGenerator()); }
@Test public void multipleCachingConfigurers() { try { load(MultiCacheManagerConfigurer.class, EnableCachingConfig.class); } catch (BeanCreationException ex) { Throwable root = ex.getRootCause(); assertTrue(root instanceof IllegalStateException); assertTrue(ex.getMessage().contains("implementations of CachingConfigurer")); } }
@Test @Ignore("AspectJ has some sort of caching that makes this one fail") public void emptyConfigSupport() { load(EmptyConfigSupportConfig.class); AnnotationCacheAspect aspect = this.ctx.getBean(AnnotationCacheAspect.class); assertNotNull(aspect.getCacheResolver()); assertEquals(SimpleCacheResolver.class, aspect.getCacheResolver().getClass()); assertSame(this.ctx.getBean(CacheManager.class), ((SimpleCacheResolver) aspect.getCacheResolver()).getCacheManager()); }