Implementation of INfieldSamplingPointInterviewerAssignmentsService
Inheritance: INfieldSamplingPointInterviewerAssignmentsService, INfieldConnectionClientObject
        public void TestAssignAsync_ServerAcceptsAssign_ReturnsNoError()
        {
            var mockedNfieldConnection = new Mock<INfieldConnectionClient>();
            var mockedHttpClient = CreateHttpClientMock(mockedNfieldConnection);

            mockedHttpClient.Setup(client => client.PostAsync(It.IsAny<string>(), It.IsAny<HttpContent>())).Returns(CreateTask(HttpStatusCode.OK));

            var target = new NfieldSamplingPointInterviewerAssignmentsService();
            target.InitializeNfieldConnection(mockedNfieldConnection.Object);

               target.AssignAsync(SurveyId, SamplingPointId, InterviewerId);

               mockedHttpClient.Verify(hc =>
               hc.PostAsync(
                   It.Is<string>(url => url.EndsWith("Surveys/" + SurveyId + "/SamplingPoints/" + SamplingPointId + "/Assignments/" + InterviewerId)),
                   null),
               Times.Once());
        }
 public void TestAssignAsync_SamplingPointIdIsNull_Throws()
 {
     var target = new NfieldSamplingPointInterviewerAssignmentsService();
     Assert.Throws<ArgumentNullException>(() =>
         UnwrapAggregateException(target.AssignAsync(SurveyId, null, InterviewerId)));
 }
        public void TestQueryAsync_ServerReturnsQuery_ReturnsListWithAssignments()
        {
            var expectedAssignments = new []
            {
                new InterviewerSamplingPointAssignmentModel {Active = false, Assigned = false, FirstName = "fn1", InterviewerId = "id1", LastName = "ln1", UserName = "******"},
                new InterviewerSamplingPointAssignmentModel {Active = true, Assigned = true, FirstName = "fn2", InterviewerId = "id2", LastName = "ln2", UserName = "******"}
            };

            var mockedNfieldConnection = new Mock<INfieldConnectionClient>();
            var mockedHttpClient = CreateHttpClientMock(mockedNfieldConnection);

            mockedHttpClient.Setup(client => client.GetAsync(It.IsAny<string>()))
                .Returns(CreateTask(HttpStatusCode.OK, new StringContent(JsonConvert.SerializeObject(expectedAssignments))));

            var target = new NfieldSamplingPointInterviewerAssignmentsService();
            target.InitializeNfieldConnection(mockedNfieldConnection.Object);

            var actualAssignments = target.QueryAsync(SurveyId, SamplingPointId).Result;
            Assert.Equal(expectedAssignments[0].InterviewerId, actualAssignments.ToArray()[0].InterviewerId);
            Assert.Equal(expectedAssignments[1].InterviewerId, actualAssignments.ToArray()[1].InterviewerId);
            Assert.Equal(2, actualAssignments.Count());
        }
 public void TestUnassignAsync_SurveyIdIsEmpty_Throws()
 {
     var target = new NfieldSamplingPointInterviewerAssignmentsService();
     Assert.Throws<ArgumentException>(() => UnwrapAggregateException(target.UnassignAsync("", SamplingPointId, InterviewerId)));
 }
        public void TestBatchUnassignAsync_ServerAcceptsUnassign_ReturnsNoError()
        {
            var mockedNfieldConnection = new Mock<INfieldConnectionClient>();
            var mockedHttpClient = CreateHttpClientMock(mockedNfieldConnection);

            mockedHttpClient.Setup(client => client.DeleteAsJsonAsync(It.IsAny<string>(), It.IsAny<SamplingPointInterviewerAssignmentsModel>()))
                .Returns(CreateTask(HttpStatusCode.OK));

            var target = new NfieldSamplingPointInterviewerAssignmentsService();
            target.InitializeNfieldConnection(mockedNfieldConnection.Object);

            var model = new SamplingPointInterviewerAssignmentsModel();
            target.UnassignAsync(SurveyId, model);

            mockedHttpClient.Verify(hc =>
                hc.DeleteAsJsonAsync(
                    It.Is<string>(url => url.EndsWith("Surveys/" + SurveyId + "/SamplingPointsAssignments")),
                    It.Is<SamplingPointInterviewerAssignmentsModel>(m => m == model)),
                Times.Once());
        }