public async Task ReturnQueryResultFromCacheIfExistsInTheCache() { string expectedResult = "Returned from cache"; var queryServiceStub = new QueryServiceStub(); var cacheManagerStub = new Mock <ICacheManager>(); cacheManagerStub.Setup(cm => cm.Exists(It.IsAny <string>())) .Returns(true); cacheManagerStub.Setup(cm => cm.Get <object>(It.IsAny <string>())) .Returns(expectedResult); var optionsStub = new CacheOptions(false, int.MaxValue); var userContextStub = new Mock <IUserContext>(); // Arrange CacheQueryServiceProxy <QueryStub, object> sut = new CacheQueryServiceProxy <QueryStub, object>( queryService: queryServiceStub, cacheManager: cacheManagerStub.Object, options: optionsStub, userContext: userContextStub.Object); // Act string actualResult = (string)await sut.ExecuteAsync(new QueryStub()); // Assert Assert.AreEqual(expectedResult, actualResult); }
public async Task NotCallThePassedQueryServiceWhenItsResultIsCached() { var queryServiceStub = new Mock <IQueryService <QueryStub, object> >(); var cacheManagerStub = new Mock <ICacheManager>(); cacheManagerStub.Setup(cm => cm.Exists(It.IsAny <string>())) .Returns(true); var optionsStub = new CacheOptions(false, int.MaxValue); var userContextStub = new Mock <IUserContext>(); // Arrange CacheQueryServiceProxy <QueryStub, object> sut = new CacheQueryServiceProxy <QueryStub, object>( queryService: queryServiceStub.Object, cacheManager: cacheManagerStub.Object, options: optionsStub, userContext: userContextStub.Object); // Act string actualResult = (string)await sut.ExecuteAsync(new QueryStub()); // Assert queryServiceStub.Verify( q => q.ExecuteAsync(It.IsAny <QueryStub>()), Times.Never); }
public async Task CacheTheQueryResultIfIsNotInTheCache() { var queryServiceStub = new QueryServiceStub(); var cacheManagerStub = new Mock <ICacheManager>(); cacheManagerStub.Setup(cm => cm.Exists(It.IsAny <string>())) .Returns(false); var optionsStub = new CacheOptions(false, int.MaxValue); var userContextStub = new Mock <IUserContext>(); // Arrange CacheQueryServiceProxy <QueryStub, object> sut = new CacheQueryServiceProxy <QueryStub, object>( queryService: queryServiceStub, cacheManager: cacheManagerStub.Object, options: optionsStub, userContext: userContextStub.Object); // Act await sut.ExecuteAsync(new QueryStub()); // Assert cacheManagerStub.Verify(cm => cm.Add( It.IsAny <string>(), It.IsAny <object>(), It.IsAny <int>()), Times.Once); }
public void SavePassedCacheManagerWhenIsNotNull() { var cacheManagerStub = new Mock <ICacheManager>(); var userContextStub = new Mock <IUserContext>(); var optionsStub = new CacheOptions(false, int.MaxValue); var queryServiceStub = new QueryServiceStub(); // Arrange CacheQueryServiceProxy <QueryStub, object> sut = new CacheQueryServiceProxy <QueryStub, object>( queryService: queryServiceStub, cacheManager: cacheManagerStub.Object, options: optionsStub, userContext: userContextStub.Object); // Assert var actualCacheManager = sut.GetType() .GetFields(BindingFlags.Instance | BindingFlags.NonPublic) .First(fi => fi.FieldType == typeof(ICacheManager)) .GetValue(sut); Assert.AreSame(cacheManagerStub.Object, actualCacheManager); }