Exemple #1
0
        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);
        }
Exemple #3
0
        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);
        }