Ejemplo n.º 1
0
        public async Task CacheKeyIsNormalised()
        {
            // Arrange
            var cache = new Mock <ICache <string> >();

            cache.Setup(c => c.TryGet(It.IsAny <string>()))
            .ReturnsAsync((false, null));
            var client = new Mock <IFunTranslationsApiClient>();

            client.Setup(c => c.ShakespeareTranslation(It.IsAny <string>()))
            .ReturnsAsync(new FunTranslationResponse(new FunTranslationResponseContents("translated")));

            var query = new TranslationQuery(cache.Object, client.Object, NullLogger <TranslationQuery> .Instance);

            var description = @"It was created by
            a scientist after
            years of horrific
            gene splicing and
            DNA engineering
            experiments.";

            // Act
            var translated = await query.Translate(Translation.Shakespeare, description);

            // Assert
            Assert.Equal("translated", translated);
            cache.Verify(c => c.TryGet("Shakespeare-It was created by a scientist after years of horrific gene splicing and DNA engineering experiments."), Times.Once);
            cache.Verify(c => c.Set("Shakespeare-It was created by a scientist after years of horrific gene splicing and DNA engineering experiments.", translated), Times.Once);
        }
Ejemplo n.º 2
0
        public async Task ValueRetrievedFromCacheIfAvailable(Translation translation)
        {
            // Arrange
            var cache = new Mock <ICache <string> >();

            cache.Setup(c => c.TryGet(It.IsAny <string>()))
            .ReturnsAsync((true, "cached-description"));
            var client = new Mock <IFunTranslationsApiClient>();

            var query = new TranslationQuery(cache.Object, client.Object, NullLogger <TranslationQuery> .Instance);

            // Act
            var translated = await query.Translate(translation, "some-description");

            // Assert
            Assert.Equal("cached-description", translated);
            cache.Verify(c => c.TryGet($"{translation}-some-description"), Times.Once);
            client.Verify(c => c.YodaTranslation(It.IsAny <string>()), Times.Never);
            client.Verify(c => c.ShakespeareTranslation(It.IsAny <string>()), Times.Never);
        }
Ejemplo n.º 3
0
        public async Task ShakespeareTranslationValueSetInCacheOnceRetrieved()
        {
            // Arrange
            var cache = new Mock <ICache <string> >();

            cache.Setup(c => c.TryGet(It.IsAny <string>()))
            .ReturnsAsync((false, null));
            var client = new Mock <IFunTranslationsApiClient>();

            client.Setup(c => c.ShakespeareTranslation(It.IsAny <string>()))
            .ReturnsAsync(new FunTranslationResponse(new FunTranslationResponseContents("translated")));

            var query = new TranslationQuery(cache.Object, client.Object, NullLogger <TranslationQuery> .Instance);

            // Act
            var translated = await query.Translate(Translation.Shakespeare, "some-description");

            // Assert
            Assert.Equal("translated", translated);
            cache.Verify(c => c.Set("Shakespeare-some-description", translated), Times.Once);
        }