Implementation of INfieldSurveyRelocationsService
Inheritance: INfieldSurveyRelocationsService, INfieldConnectionClientObject
        public void TestPutAsync_Always_CallsCorrectURI()
        {
            var relocation = new SurveyRelocation { Reason = "reason X", Url = "url X" };
            var mockedNfieldConnection = new Mock<INfieldConnectionClient>();
            var mockedHttpClient = CreateHttpClientMock(mockedNfieldConnection);
            mockedHttpClient
                .Setup(client => client.PutAsJsonAsync(It.IsAny<string>(), It.IsAny<SurveyRelocation>()))
                .Returns(CreateTask(HttpStatusCode.OK,
                    new StringContent(JsonConvert.SerializeObject(It.IsAny<SurveyRelocation>()))));

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

            target.UpdateAsync(SurveyId, relocation).Wait();

            mockedHttpClient
                .Verify(
                    client =>
                        client.PutAsJsonAsync(ServiceAddress + "Surveys/" + SurveyId + "/Relocations", It.IsAny<SurveyRelocation>()),
                    Times.Once());
        }
        public void TestQueryAsync_ServerReturnsQuery_ReturnsListWithRelocations()
        {
            var expectedRelocationss = new []
            { new SurveyRelocation { Reason = "reason X", Url = "url X"},
              new SurveyRelocation { Reason = "reason Y", Url = "url Y"}
            };
            var mockedNfieldConnection = new Mock<INfieldConnectionClient>();
            var mockedHttpClient = CreateHttpClientMock(mockedNfieldConnection);
            mockedHttpClient
                .Setup(client => client.GetAsync(ServiceAddress + "Surveys/" + SurveyId + "/Relocations"))
                .Returns(CreateTask(HttpStatusCode.OK, new StringContent(JsonConvert.SerializeObject(expectedRelocationss))));

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

            var actualRelocations = target.QueryAsync(SurveyId).Result.ToArray(); ;
            Assert.Equal(expectedRelocationss[0].Reason, actualRelocations[0].Reason);
            Assert.Equal(expectedRelocationss[0].Url, actualRelocations[0].Url);
            Assert.Equal(expectedRelocationss[1].Reason, actualRelocations[1].Reason);
            Assert.Equal(expectedRelocationss[1].Url, actualRelocations[1].Url);
            Assert.Equal(2, actualRelocations.Length);
        }
 public void TestQueryAsync_SurveyIdIsEmpty_Throws()
 {
     var target = new NfieldSurveyRelocationsService();
     Assert.Throws<ArgumentException>(() => UnwrapAggregateException(target.QueryAsync("")));
 }
 public void TestUpdateAsync_SurveyIdIsNull_Throws()
 {
     var target = new NfieldSurveyRelocationsService();
     Assert.Throws<ArgumentNullException>(() => UnwrapAggregateException(target.UpdateAsync(null, new SurveyRelocation())));
 }
        public void TestUpdateAsync_ServerAcceptsRelocations_ReturnsOk()
        {
            var relocation = new SurveyRelocation {Reason = "reason X", Url = "url X"};
            var mockedNfieldConnection = new Mock<INfieldConnectionClient>();
            var mockedHttpClient = CreateHttpClientMock(mockedNfieldConnection);
            var content = new StringContent(JsonConvert.SerializeObject(relocation));
            mockedHttpClient
                .Setup(
                    client => client.PutAsJsonAsync(ServiceAddress + "Surveys/" + SurveyId + "/Relocations", relocation))
                .Returns(CreateTask(HttpStatusCode.OK, content));

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

            Assert.DoesNotThrow(() => target.UpdateAsync(SurveyId, relocation).Wait());
        }