public void GetSampleDtoAsync_RequestSucceeded_CallsGetSampleDtoCompletedActionWithSampleDto()
        {
            // Arrange
            var expectedSampleDto = new SampleDto { Id = 123, Name = "sample" };
            httpMessageHandlerStub.
                SetupGet(new Uri(baseAddress + sampleDtoUri)).
                Returns(expectedSampleDto);
            SampleDto actualSampleDto = null;

            // Act
            httpClientWrapper.GetSampleDtoAsync(sampleDto => actualSampleDto = sampleDto);

            // Assert
            Assert.That(() => actualSampleDto, Is.Not.Null.After(fiveSeconds, pollingEvery100Milliseconds));
            Assert.That(actualSampleDto.Id, Is.EqualTo(expectedSampleDto.Id));
            Assert.That(actualSampleDto.Name, Is.EqualTo(expectedSampleDto.Name));
        }
        public void PostSampleDtoAsync_RequestSucceeded_PassedSampleDtoIsPosted()
        {
            // Arrange
            var sampleDto = new SampleDto { Id = 1 };
            httpMessageHandlerStub.
                SetupPost<SampleDto>(new Uri(baseAddress + sampleDtoUri), dto => dto.Id == sampleDto.Id).
                Returns(HttpStatusCode.OK);
            var sampleDtoWasPostedSuccessfully = false;

            // Act
            httpClientWrapper.PostSampleDtoAsync(sampleDto, () => sampleDtoWasPostedSuccessfully = true);

            // Assert
            Assert.That(() => sampleDtoWasPostedSuccessfully, Is.True.After(fiveSeconds, pollingEvery100Milliseconds));
        }
 public void PostSampleDtoAsync(SampleDto sampleDto, Action postSampleDtoCompletedAction)
 {
     httpClient.
         PostAsJsonAsync(SampleDtoUri, sampleDto).
         ContinueWith(task =>
                      {
                      	try
                      	{
                      		var response = task.Result;
                      		if (!response.IsSuccessStatusCode)
                      			LastError = new Exception(response.StatusCode.ToString());
                      		else
                      			postSampleDtoCompletedAction();
                      	}
                      	catch (AggregateException aggregateException)
                      	{
                      		LastError = aggregateException.InnerException;
                      	}
                      });
 }