Model for multiple sampling points to multiple interviewers assignments
        public Task AssignAsync(string surveyId, SamplingPointInterviewerAssignmentsModel model)
        {
            CheckParameters(surveyId, model);

            var uri = AssignmentsApi(surveyId).AbsoluteUri;

            return Client.PostAsJsonAsync(uri, model).FlattenExceptions();
        }
        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());
        }
        private static void CheckParameters(string surveyId, SamplingPointInterviewerAssignmentsModel model)
        {
            if (surveyId == null)
                throw new ArgumentNullException("surveyId");

            if (model == null)
                throw new ArgumentNullException("model");
        }