public async Task SimpleCacheForFaqResponse_WhenAddAndUpdateValue_ShouldGet_UpdatedValue() { //Arrange var key = "key"; var value = new FaqResponse <string>() { Answer = "value", Score = 1 }; var updatedValue = new FaqResponse <string>() { Answer = "updatedValue", Score = 0.5f }; //Act await _cacheServiceForFaqResponseValue.AddOrUpdate(key, value); await _cacheServiceForFaqResponseValue.AddOrUpdate(key, updatedValue); var cached = await _cacheServiceForFaqResponseValue.Get(key); //Assert Assert.That(cached, Is.Not.Null); Assert.That(cached.CompareTo(value) != 0); Assert.That(cached.CompareTo(updatedValue) == 0); }
public async Task <FaqResponse <string> > AskThenIAnswer(FaqRequest request) { var cachedResponse = await _cacheService.Get(request.Ask); if (cachedResponse != null) { return(cachedResponse); } var qnaRequest = new QnaMakerRequest { Question = request.Ask }; var requestContent = new StringContent(JsonConvert.SerializeObject(qnaRequest), Encoding.UTF8, "application/json"); var requestMessage = GetRequestMessage(requestContent); var response = await _httpClient.SendAsync(requestMessage); var responseContent = await response.Content.ReadAsStringAsync(); var qnaResponse = JsonConvert.DeserializeObject <QnaMakerResponse>(responseContent); var faqResponse = new FaqResponse <string> { Answer = HttpUtility.HtmlDecode(qnaResponse.Answer), Score = qnaResponse.Score / 100f }; await _cacheService.AddOrUpdate(request.Ask, faqResponse); return(faqResponse); }
public async Task SimpleCacheForFaqResponse_WhenAddAndRemoveValueTwice_ShouldGet_NullValue() { //Arrange var key = "key"; var value = new FaqResponse <string>() { Answer = "value", Score = 1 }; //Act await _cacheServiceForFaqResponseValue.AddOrUpdate(key, value); await _cacheServiceForFaqResponseValue.Remove(key); var cached = await _cacheServiceForFaqResponseValue.Remove(key); //Assert Assert.That(cached, Is.Null); }