public async Task AddAndSaveWithCacheAsync() { var identity = await _identityRepository.AddAsync(IdentityGenerator.Default, o => o.Cache()); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); string cacheKey = _cache.Keys.Single(); var cacheValue = await _cache.GetAsync <Identity>(cacheKey); Assert.True(cacheValue.HasValue); Assert.Equal(identity, cacheValue.Value); identity = await _identityRepository.GetByIdAsync(identity.Id, o => o.Cache()); Assert.NotNull(identity); Assert.Equal(2, _cache.Hits); cacheValue = await _cache.GetAsync <Identity>(cacheKey); Assert.True(cacheValue.HasValue); Assert.Equal(identity, cacheValue.Value); await _identityRepository.InvalidateCacheAsync(identity); Assert.Equal(0, _cache.Count); Assert.Equal(3, _cache.Hits); Assert.Equal(0, _cache.Misses); var result = await _identityRepository.SaveAsync(identity, o => o.Cache()); Assert.NotNull(result); Assert.Equal(1, _cache.Count); Assert.Equal(3, _cache.Hits); Assert.Equal(0, _cache.Misses); cacheValue = await _cache.GetAsync <Identity>(cacheKey); Assert.True(cacheValue.HasValue); Assert.Equal(identity, cacheValue.Value); }
public async Task InvalidateCache() { var identity = await _identityRepository.AddAsync(IdentityGenerator.Default, addToCache : true); Assert.NotNull(identity?.Id); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.InvalidateCacheAsync(identity); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.SaveAsync(identity, addToCache : true); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(1, _cache.Misses); // Save will attempt to lookup the original document using the cache. await _identityRepository.InvalidateCacheAsync(new List <Identity> { identity }); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(1, _cache.Misses); await _identityRepository.SaveAsync(new List <Identity> { identity }, addToCache : true); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(2, _cache.Misses); // Save will attempt to lookup the original document using the cache. await _identityRepository.InvalidateCacheAsync(new List <Identity> { identity }); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(2, _cache.Misses); await _identityRepository.SaveAsync(new List <Identity> { identity }, addToCache : true); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(3, _cache.Misses); await _identityRepository.InvalidateCacheAsync(identity); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(3, _cache.Misses); await _identityRepository.InvalidateCacheAsync(new List <Identity> { identity }); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(3, _cache.Misses); }
public async Task InvalidateCacheAsync() { var identity = await _identityRepository.AddAsync(IdentityGenerator.Default, o => o.Cache()); Assert.NotNull(identity?.Id); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.InvalidateCacheAsync(identity); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.SaveAsync(identity, o => o.Cache()); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.InvalidateCacheAsync(new List <Identity> { identity }); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.SaveAsync(new List <Identity> { identity }, o => o.Cache()); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.InvalidateCacheAsync(new List <Identity> { identity }); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.SaveAsync(new List <Identity> { identity }, o => o.Cache()); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.InvalidateCacheAsync(identity); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); await _identityRepository.InvalidateCacheAsync(new List <Identity> { identity }); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); }