public async Task Then_If_The_Request_Is_Not_Successful_Then_The_Short_Cache_Is_Updated_From_Long_Cache( string cacheKey, string errorContent, TestRequest request, TestData requestData, TestData cacheData, [Frozen] Mock <IGetApiClient <IApiConfiguration> > getApiClient, [Frozen] Mock <ICacheStorageService> cacheStorageService, ReliableCacheStorageService <IApiConfiguration> reliableCacheStorageService) { //Arrange var response = new ApiResponse <TestData>(requestData, HttpStatusCode.TooManyRequests, errorContent); cacheStorageService.Setup(x => x.RetrieveFromCache <TestData>($"{cacheKey}_extended")).ReturnsAsync(cacheData); cacheStorageService.Setup(x => x.RetrieveFromCache <TestData>($"{cacheKey}")).ReturnsAsync((TestData)null); getApiClient .Setup( x => x.GetWithResponseCode <TestData>(It.Is <IGetApiRequest>(c => c.GetUrl.Equals(request.GetUrl)))) .ReturnsAsync(response); //Act var actual = await reliableCacheStorageService.GetData <TestData>(request, cacheKey, _ => true); //Assert actual.Should().BeEquivalentTo(cacheData); cacheStorageService.Verify(x => x.SaveToCache(cacheKey, cacheData, TimeSpan.FromMinutes(5)), Times.Once); cacheStorageService.Verify(x => x.SaveToCache($"{cacheKey}_extended", It.IsAny <TestData>(), TimeSpan.FromDays(180)), Times.Never); }
public async Task Then_If_The_Short_Cache_Is_Available_The_Request_Is_Not_Called( string cacheKey, TestRequest request, TestData requestData, [Frozen] Mock <IGetApiClient <IApiConfiguration> > getApiClient, [Frozen] Mock <ICacheStorageService> cacheStorageService, ReliableCacheStorageService <IApiConfiguration> reliableCacheStorageService) { //Arrange cacheStorageService.Setup(x => x.RetrieveFromCache <TestData>(cacheKey)).ReturnsAsync(requestData); //Act var actual = await reliableCacheStorageService.GetData <TestData>(request, cacheKey, _ => true); //Assert actual.Should().BeEquivalentTo(requestData); getApiClient.Verify(x => x.GetWithResponseCode <TestData>(It.IsAny <IGetApiRequest>()), Times.Never); }
public async Task Then_If_The_RequestCheck_Returns_False_Then_The_Cache_Is_Not_Updated( string cacheKey, TestRequest request, TestData requestData, [Frozen] Mock <IGetApiClient <IApiConfiguration> > getApiClient, [Frozen] Mock <ICacheStorageService> cacheStorageService, ReliableCacheStorageService <IApiConfiguration> reliableCacheStorageService) { var response = new ApiResponse <TestData>(requestData, HttpStatusCode.OK, ""); getApiClient .Setup( x => x.GetWithResponseCode <TestData>(It.Is <IGetApiRequest>(c => c.GetUrl.Equals(request.GetUrl)))) .ReturnsAsync(response); //Act var actual = await reliableCacheStorageService.GetData <TestData>(request, cacheKey, _ => false); //Assert actual.Should().BeNull(); cacheStorageService.Verify(x => x.SaveToCache(It.IsAny <string>(), It.IsAny <TestData>(), It.IsAny <TimeSpan>()), Times.Never); }
public async Task Then_The_Request_Is_Handled_And_Two_Items_Created( string cacheKey, TestRequest request, TestData requestData, [Frozen] Mock <IGetApiClient <IApiConfiguration> > getApiClient, [Frozen] Mock <ICacheStorageService> cacheStorageService, ReliableCacheStorageService <IApiConfiguration> reliableCacheStorageService) { //Arrange var response = new ApiResponse <TestData>(requestData, HttpStatusCode.OK, ""); getApiClient.Setup(x => x.GetWithResponseCode <TestData>(It.Is <IGetApiRequest>(c => c.GetUrl.Equals(request.GetUrl)))) .ReturnsAsync(response); //Act var actual = await reliableCacheStorageService.GetData <TestData>(request, cacheKey, _ => true); //Assert actual.Should().BeEquivalentTo(requestData); cacheStorageService.Verify(x => x.SaveToCache(cacheKey, requestData, TimeSpan.FromMinutes(5)), Times.Once); cacheStorageService.Verify(x => x.SaveToCache($"{cacheKey}_extended", requestData, TimeSpan.FromDays(180)), Times.Once); }