Exemplo n.º 1
0
        public async Task GivenPrinter_AndCancellationToken_WhenCreateAsync_ThenHttpAdapterCalled_AndResponseDeserialised()
        {
            // Arrange
            var mockHttpAdapter = new Mock <IHttpAdapter <PrintersClient> >();
            var sut             = new PrintersClient(mockHttpAdapter.Object);

            var request = new Dto.Request.Printer
            {
                Name = "Bob Hoskins"
            };
            var requestContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");

            var response = new ObjectResponse <Printer>
            {
                Success = true,
                Value   = new Printer
                {
                    Id = "Hello World"
                },
                Error = new Error
                {
                    HttpStatusCode = System.Net.HttpStatusCode.OK,
                    Message        = "Deserialisation test"
                }
            };

            mockHttpAdapter.Setup(x => x.PostAsync(
                                      It.IsAny <Uri>(),
                                      It.IsAny <StringContent>(),
                                      It.IsAny <CancellationToken>()))
            .ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = System.Net.HttpStatusCode.OK,
                Content    = new StringContent(JsonConvert.SerializeObject(response), Encoding.UTF8, "application/json")
            });

            var cancellationTokenSource = new CancellationTokenSource();

            // Act
            var result = await sut.CreateAsync(
                request,
                cancellationTokenSource.Token);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(response.Value.Id, result.Value.Id);
            Assert.Equal(response.Error.Message, result.Error.Message);
            mockHttpAdapter.Verify(x => x.PostAsync(
                                       It.Is <Uri>(y => y.ToString() == new Uri($"/api/Printers", UriKind.Relative).ToString()),
                                       It.Is <StringContent>(y => y.ReadAsStringAsync().GetAwaiter().GetResult() == requestContent.ReadAsStringAsync().GetAwaiter().GetResult()),
                                       It.Is <CancellationToken>(y => y == cancellationTokenSource.Token)), Times.Once);
        }
Exemplo n.º 2
0
        public async Task GivenCancellationToken_WhenGetAllAsync_ThenHttpAdapterCalled_AndResponseDeserialised()
        {
            // Arrange
            var mockHttpAdapter = new Mock <IHttpAdapter <PrintersClient> >();
            var sut             = new PrintersClient(mockHttpAdapter.Object);

            var response = new ObjectResponse <List <Printer> >
            {
                Success = true,
                Value   = new List <Printer>
                {
                    new Printer
                    {
                        Id = "Hello World"
                    }
                },
                Error = new Error
                {
                    HttpStatusCode = System.Net.HttpStatusCode.OK,
                    Message        = "Deserialisation test"
                }
            };

            mockHttpAdapter.Setup(x => x.GetAsync(
                                      It.IsAny <Uri>(),
                                      It.IsAny <CancellationToken>()))
            .ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = System.Net.HttpStatusCode.OK,
                Content    = new StringContent(JsonConvert.SerializeObject(response))
            });

            var cancellationTokenSource = new CancellationTokenSource();

            // Act
            var result = await sut.GetAllAsync(
                cancellationTokenSource.Token);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(response.Value[0].Id, result.Value[0].Id);
            Assert.Equal(response.Error.Message, result.Error.Message);
            mockHttpAdapter.Verify(x => x.GetAsync(
                                       It.Is <Uri>(y => y.ToString() == new Uri($"/api/Printers", UriKind.Relative).ToString()),
                                       It.Is <CancellationToken>(y => y == cancellationTokenSource.Token)), Times.Once);
        }
Exemplo n.º 3
0
        public async Task GivenId_AndCancellationToken_WhenDeleteAsync_ThenHttpAdapterCalled_AndResponseDeserialised()
        {
            // Arrange
            var mockHttpAdapter = new Mock <IHttpAdapter <PrintersClient> >();
            var sut             = new PrintersClient(mockHttpAdapter.Object);

            var response = new Response
            {
                Success = true,
                Error   = new Error
                {
                    HttpStatusCode = System.Net.HttpStatusCode.OK,
                    Message        = "Deserialisation test"
                }
            };
            var id = Guid.NewGuid().ToString();

            mockHttpAdapter.Setup(x => x.DeleteAsync(
                                      It.IsAny <Uri>(),
                                      It.IsAny <CancellationToken>()))
            .ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = System.Net.HttpStatusCode.OK,
                Content    = new StringContent(JsonConvert.SerializeObject(response))
            });

            var cancellationTokenSource = new CancellationTokenSource();

            // Act
            var result = await sut.DeleteAsync(
                id,
                cancellationTokenSource.Token);

            // Assert
            Assert.True(result.Success);
            Assert.Equal(response.Error.Message, result.Error.Message);
            mockHttpAdapter.Verify(x => x.DeleteAsync(
                                       It.Is <Uri>(y => y.ToString() == new Uri($"/api/Printers/{id}", UriKind.Relative).ToString()),
                                       It.Is <CancellationToken>(y => y == cancellationTokenSource.Token)), Times.Once);
        }