public async Task ShouldReturnOriginalStringWhenHttpRequestExceptionIsRaised()
        {
            var mockHandler = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            mockHandler
            .Protected()
            // Setup the PROTECTED method to mock
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>()
                )
            // prepare the expected response of the mocked http call
            .Throws <HttpRequestException>()
            //.ReturnsAsync(new HttpResponseMessage(HttpStatusCode.NotFound))
            .Verifiable();

            var client = new HttpClient(mockHandler.Object)
            {
                BaseAddress = new Uri(TranslationServiceUri)
            };

            _shakespeareTranslationService = new ShakespeareTranslationService(client);

            var result = await _shakespeareTranslationService.Translate(TextToTranslate);

            Assert.IsTrue(string.Equals(result, TextToTranslate));
        }
        public async Task ShouldGetShakespeareTranslation()
        {
            var mockHandler = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            mockHandler
            .Protected()
            // Setup the PROTECTED method to mock
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>()
                )
            // prepare the expected response of the mocked http call
            .ReturnsAsync(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent("{'success':{'total':1},'contents':{'translated':'Thee did giveth mr. Tim a hearty meal,  but unfortunately what he did doth englut did maketh him kicketh the bucket.','text':'You gave Mr. Tim a hearty meal, but unfortunately what he ate made him die.','translation':'shakespeare'}}"),
            })
            .Verifiable();

            var client = new HttpClient(mockHandler.Object)
            {
                BaseAddress = new Uri(TranslationServiceUri)
            };

            _shakespeareTranslationService = new ShakespeareTranslationService(client);

            var result = await _shakespeareTranslationService.Translate(TextToTranslate);

            Assert.IsTrue(string.Equals(result, TranslatedText));
        }
        public async void Translate_ValidText_ShouldReturnTranslatedText(string text, string expectedTranslatedText)
        {
            var service = new ShakespeareTranslationService();

            var translatedText = await service.Translate(text);

            translatedText.Should().Be(expectedTranslatedText);
        }
        public void Translate_InvalidText_ShouldThrownArgumentExcpetion(string text)
        {
            var service = new ShakespeareTranslationService();

            Func <Task <string> > func = async() => await service.Translate(text);

            func.Should().Throw <ArgumentException>();
        }
Example #5
0
        public void TestNoTranslationExistsThrowsException()
        {
            var badDescription    = "fake";
            var returnTranslation = new TranslatedObject();

            returnTranslation = null;

            var mockRepo           = new Mock <ITranslationRepository>();
            var shakespeareService = new ShakespeareTranslationService(mockRepo.Object);

            mockRepo.Setup(a => a.GetTranslation(badDescription)).Returns(returnTranslation);

            Assert.Throws <ApiException>(() => shakespeareService.GetTranslation(badDescription));
        }
Example #6
0
        public void TestApiReturnsSuccessCountOtherThanOneThrowsException()
        {
            var badDescription    = "fake";
            var returnTranslation = new TranslatedObject();

            returnTranslation.success       = new Success();
            returnTranslation.success.total = 0;
            returnTranslation.contents      = new Contents();

            var mockRepo           = new Mock <ITranslationRepository>();
            var shakespeareService = new ShakespeareTranslationService(mockRepo.Object);

            mockRepo.Setup(a => a.GetTranslation(badDescription)).Returns(returnTranslation);

            Assert.Throws <ApiException>(() => shakespeareService.GetTranslation(badDescription));
        }
Example #7
0
        private ITranslationService GetTranslationService()
        {
            var translationServiceType             = Configuration.GetValue <TranslationServiceType>("TranslationServiceType");
            ITranslationService translationService = null;

            switch (translationServiceType)
            {
            case TranslationServiceType.Fake:
                translationService = new FakeTranslationService();
                break;

            case TranslationServiceType.Shakespeare:
                translationService = new ShakespeareTranslationService();
                break;

            default:
                break;
            }

            return(translationService);
        }