package de.axone.cache.ng; import static de.axone.cache.ng.CacheNGTest_Implementations.*; import static org.mockito.Mockito.*; import static org.testng.Assert.*; import org.testng.annotations.Test; import de.axone.cache.ng.CacheNGTestHelpers.Aid; import de.axone.cache.ng.CacheNGTestHelpers.RN; import de.axone.cache.ng.CacheNGTestHelpers.TArticle; import de.axone.cache.ng.CacheNGTest_ArticleForId.TestAccessor_ArticleForAid; @Test( groups="cacheng.accessor" ) public class CacheNGTest_AccessorUsage { public void accessorIsOnlyUsedWhenNeeded(){ CacheNG.AutomaticClient<Aid, TArticle> auto = new AutomaticClientImpl<>( new CacheHashMap<>( RN.AID_ARTICLE ) ); TestAccessor_ArticleForAid acc = spy( new TestAccessor_ArticleForAid() ); verify( acc, never() ).fetch( A12345 ); CacheNGTestHelpers.TArticle art; art = auto.fetch( A12345, acc ); assertNotNull( art ); // Now we hat one call to accessor verify( acc, times( 1 ) ).fetch( A12345 ); art = auto.fetch( A12345, acc ); assertNotNull( art ); // this one was cached so no call verify( acc, times( 1 ) ).fetch( A12345 ); auto.invalidate( A12345 ); art = auto.fetch( A12345, acc ); assertNotNull( art ); // Now we had to get it again, make it two calls verify( acc, times( 2 ) ).fetch( A12345 ); } }