public async Task SaveCollectionAsync() { var identities = new List <Identity> { IdentityGenerator.Default, IdentityGenerator.Generate(ObjectId.GenerateNewId().ToString()) }; await _identityRepository.SaveAsync(identities); var results = await _identityRepository.GetByIdsAsync(identities.Select(i => i.Id).ToList()); Assert.Equal(2, results.Count); }
public async Task GetByIdAnyIdsWithCache() { var identity = await _identityRepository.AddAsync(IdentityGenerator.Default); Assert.NotNull(identity?.Id); Assert.Equal(0, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(0, _cache.Misses); Assert.Equal(identity, await _identityRepository.GetByIdAsync(identity.Id, useCache: true)); Assert.Equal(1, _cache.Count); Assert.Equal(0, _cache.Hits); Assert.Equal(1, _cache.Misses); string cacheKey = _cache.Keys.Single(); var cacheValue = await _cache.GetAsync <Identity>(cacheKey); Assert.True(cacheValue.HasValue); Assert.Equal(identity, cacheValue.Value); var results = await _identityRepository.GetByIdsAsync(new[] { identity.Id }, useCache : true); Assert.Equal(1, results.Count); Assert.Equal(identity, results.First()); Assert.Equal(1, _cache.Count); Assert.Equal(2, _cache.Hits); Assert.Equal(1, _cache.Misses); 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(1, _cache.Misses); results = await _identityRepository.GetByIdsAsync(new[] { identity.Id }, useCache : true); Assert.Equal(1, results.Count); Assert.Equal(identity, results.First()); Assert.Equal(1, _cache.Count); Assert.Equal(3, _cache.Hits); Assert.Equal(2, _cache.Misses); cacheValue = await _cache.GetAsync <Identity>(cacheKey); Assert.True(cacheValue.HasValue); Assert.Equal(identity, cacheValue.Value); Assert.Equal(identity, await _identityRepository.GetByIdAsync(identity.Id, useCache: true)); Assert.Equal(1, _cache.Count); Assert.Equal(5, _cache.Hits); Assert.Equal(2, _cache.Misses); cacheValue = await _cache.GetAsync <Identity>(cacheKey); Assert.True(cacheValue.HasValue); Assert.Equal(identity, cacheValue.Value); }