public async Task ReadItemAsync()
        {
            var expectedUom = new Uom().WithId(1001);
            var url         = "http://qtb3.com/a/b";
            HttpRequestMessage sentMessage = null;
            var httpResponseMessage        =
                new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent("stringContent")
            };
            var httpService  = new Mock <IHttpReadService>(MockBehavior.Strict);
            var deserializer = new Mock <IContentDeserializer>(MockBehavior.Strict);
            var sequence     = new MockSequence();

            httpService
            .InSequence(sequence)
            .Setup(h => h.SendAsync(It.IsAny <HttpRequestMessage>()))
            .ReturnsAsync(httpResponseMessage)
            .Callback <HttpRequestMessage>((request) => sentMessage = request);
            deserializer
            .InSequence(sequence)
            .Setup(d => d.DeserializeAsync <Uom>(httpResponseMessage.Content))
            .ReturnsAsync(expectedUom);

            var uut       = new ReadItemServiceBuildRequest <Uom>(httpService.Object, deserializer.Object);
            var actualUom = await uut.ReadItemAsync(url);

            Assert.NotNull(sentMessage);
            Assert.AreEqual(url, sentMessage.RequestUri.ToString());
            Assert.AreEqual(sentMessage.Method, HttpMethod.Get);
            Assert.AreEqual(expectedUom, actualUom);
        }
        public void ReadItemAsync_BadUrl()
        {
            var httpService  = new Mock <IHttpReadService>(MockBehavior.Strict).Object;
            var deserializer = new Mock <IContentDeserializer>(MockBehavior.Strict).Object;
            var uut          = new ReadItemServiceBuildRequest <Uom>(httpService, deserializer);

            Assert.ThrowsAsync <ArgumentException>(
                async() => await uut.ReadItemAsync("abc")
                );
        }
Esempio n. 3
0
        protected IReadItemService <TItem> BuildReadItemService <TItem>(IComponentContext context)
        {
            var httpService  = BuildReadHttpService(context);
            var deserializer = new JsonContentDeserializer();
            var readItemServiceBuildRequest = new ReadItemServiceBuildRequest <TItem>(httpService, deserializer);
            var itemUrlBuilder          = context.Resolve <IItemReadUrlBuilder <TItem> >();
            var readItemServiceBuildUrl = new ReadItemServiceBuildUrl <TItem>(itemUrlBuilder, readItemServiceBuildRequest);

            return(new ReadItemService <TItem>(readItemServiceBuildUrl));
        }
        public void ReadItemAsync_HttpStatus500()
        {
            var url = "http://qtb3.com/a/b";
            HttpRequestMessage sentMessage = null;
            var httpResponseMessage        = new HttpResponseMessage(HttpStatusCode.InternalServerError);
            var httpService  = new Mock <IHttpReadService>(MockBehavior.Strict);
            var deserializer = new Mock <IContentDeserializer>(MockBehavior.Strict);

            httpService
            .Setup(h => h.SendAsync(It.IsAny <HttpRequestMessage>()))
            .ReturnsAsync(httpResponseMessage)
            .Callback <HttpRequestMessage>((request) => sentMessage = request);

            var uut       = new ReadItemServiceBuildRequest <Uom>(httpService.Object, deserializer.Object);
            var exception = Assert.ThrowsAsync <FailedRequestException>(
                async() => await uut.ReadItemAsync(url)
                );

            Assert.AreEqual(HttpStatusCode.InternalServerError, exception.StatusCode);
            Assert.NotNull(sentMessage);
            Assert.AreEqual(url, sentMessage.RequestUri.ToString());
            Assert.AreEqual(sentMessage.Method, HttpMethod.Get);
        }