public void TestCountsQueryAsync_ServerReturnsQuery_ReturnsCounts()
{
const int expectedDroppedOutCount = 1;
const int expectedRejectedCount = 2;
const int expectedScreenedOutCount = 3;
const int expectedSuccessfulCount = 4;
var surveyId = Guid.NewGuid().ToString();
var expectedCounts = new SurveyCounts
{
DroppedOutCount = expectedDroppedOutCount,
RejectedCount = expectedRejectedCount,
ScreenedOutCount = expectedScreenedOutCount,
SuccessfulCount = expectedSuccessfulCount
};
var mockedNfieldConnection = new Mock<INfieldConnectionClient>();
var mockedHttpClient = CreateHttpClientMock(mockedNfieldConnection);
var url = string.Format("{0}surveys/{1}/counts", ServiceAddress, surveyId);
mockedHttpClient
.Setup(client => client.GetAsync(url))
.Returns(CreateTask(HttpStatusCode.OK, new StringContent(JsonConvert.SerializeObject(expectedCounts))));
var target = new NfieldSurveysService();
target.InitializeNfieldConnection(mockedNfieldConnection.Object);
var result = target.CountsQueryAsync(surveyId).Result;
Assert.Equal(expectedDroppedOutCount, result.DroppedOutCount);
Assert.Equal(expectedRejectedCount, result.RejectedCount);
Assert.Equal(expectedScreenedOutCount, result.ScreenedOutCount);
Assert.Equal(expectedSuccessfulCount, result.SuccessfulCount);
}