public void TestGetAsync_SurveyHasInvitationTemplates_ReturnsInvitationTemplates()
        {
            const string surveyId = "TestSurveyId";

            var expected1 = new InvitationTemplateModel()
            {
                Id             = 1,
                InvitationType = 1,
                Name           = "TestTemplate1",
                Subject        = "TestSubject1",
                Body           = "TestBody1"
            };

            var expected2 = new InvitationTemplateModel()
            {
                Id             = 2,
                InvitationType = 2,
                Name           = "TestTemplate2",
                Subject        = "TestSubject2",
                Body           = "TestBody2"
            };

            var target       = new NfieldSurveyInvitationTemplatesService();
            var returnObject = new[] { expected1, expected2 };
            var requestUri   = new Uri(ServiceAddress, "Surveys/" + surveyId + "/InvitationTemplates/");
            var mockClient   = InitMockClientGet <IEnumerable <InvitationTemplateModel> >(requestUri, returnObject);

            target.InitializeNfieldConnection(mockClient);
            var actualResults = target.GetAsync(surveyId).Result.ToArray();

            Assert.Equal(expected1, actualResults[0], new InvitationTemplateComparer());
            Assert.Equal(expected2, actualResults[1], new InvitationTemplateComparer());
        }
 private static bool VerifyInvitationTemplate(InvitationTemplateModel updatedInvitationTemplate, InvitationTemplateModel t1)
 {
     return(updatedInvitationTemplate.InvitationType.Equals(t1.InvitationType) &&
            updatedInvitationTemplate.Body.Equals(t1.Body) &&
            updatedInvitationTemplate.Subject == null &&
            updatedInvitationTemplate.Name == null);
 }
        public Task <InvitationTemplateModelValidated> UpdateAsync(string surveyId, InvitationTemplateModel invitationTemplate)
        {
            Ensure.ArgumentNotNullOrEmptyString(surveyId, nameof(surveyId));
            Ensure.ArgumentNotNull(invitationTemplate, nameof(invitationTemplate));

            var uri = SurveyInvitationTemplatesUrl(surveyId);

            return(Client.PutAsJsonAsync(new Uri(uri, invitationTemplate.Id.ToString()), invitationTemplate)
                   .ContinueWith(responseMessageTask => responseMessageTask.Result.Content.ReadAsStringAsync().Result)
                   .ContinueWith(stringTask => JsonConvert.DeserializeObject <InvitationTemplateModelValidated>(stringTask.Result))
                   .FlattenExceptions());
        }
        public Task <InvitationTemplateModelValidated> AddAsync(string surveyId, InvitationTemplateModel invitationTemplate)
        {
            Ensure.ArgumentNotNullOrEmptyString(surveyId, nameof(surveyId));
            Ensure.ArgumentNotNull(invitationTemplate, nameof(invitationTemplate));

            var uri = SurveyInvitationTemplatesUrl(surveyId);

            return(Client.PostAsJsonAsync(uri, invitationTemplate)
                   .ContinueWith(task => task.Result.Content.ReadAsStringAsync().Result)
                   .ContinueWith(task => JsonConvert.DeserializeObject <InvitationTemplateModelValidated>(task.Result))
                   .FlattenExceptions());
        }
        public void TestUpdateAsync_InvitationTemplateIsUpdated_ReturnsInvitationTemplate()
        {
            const string surveyId   = "TestSurveyId";
            const int    templateId = 42;

            var invitationTemplate = new InvitationTemplateModel
            {
                Id             = templateId,
                InvitationType = 1,
                Body           = "TestBody1"
            };
            var expected = new InvitationTemplateModel
            {
                Id             = templateId,
                InvitationType = invitationTemplate.InvitationType,
                Name           = "a Name",
                Subject        = "a Subject",
                Body           = invitationTemplate.Body
            };

            var mockedNfieldConnection = new Mock <INfieldConnectionClient>();
            var mockedHttpClient       = CreateHttpClientMock(mockedNfieldConnection);
            var content = new StringContent(JsonConvert.SerializeObject(expected));

            mockedHttpClient
            .Setup(client => client.PutAsJsonAsync(new Uri(ServiceAddress, "Surveys/" + surveyId + "/InvitationTemplates/" + templateId), It.Is <InvitationTemplateModel>(t => VerifyInvitationTemplate(t, invitationTemplate))))
            .Returns(CreateTask(HttpStatusCode.OK, content));

            var target = new NfieldSurveyInvitationTemplatesService();

            target.InitializeNfieldConnection(mockedNfieldConnection.Object);

            var actual = target.UpdateAsync(surveyId, invitationTemplate).Result;

            Assert.Equal(expected, actual, new InvitationTemplateComparer());
        }
        public void TestAddAsync_InvitationTemplateIsAdded_ReturnsInvitationTemplate()
        {
            const string surveyId = "TestSurveyId";

            var invitationTemplate = new InvitationTemplateModel
            {
                InvitationType = 1,
                Name           = "TestTemplate1",
                Subject        = "TestSubject1",
                Body           = "TestBody1"
            };
            var expected = new InvitationTemplateModel
            {
                Id             = 999,
                InvitationType = invitationTemplate.InvitationType,
                Name           = invitationTemplate.Name,
                Subject        = invitationTemplate.Subject,
                Body           = invitationTemplate.Body
            };

            var mockedNfieldConnection = new Mock <INfieldConnectionClient>();
            var mockedHttpClient       = CreateHttpClientMock(mockedNfieldConnection);
            var content = new StringContent(JsonConvert.SerializeObject(expected));

            mockedHttpClient
            .Setup(client => client.PostAsJsonAsync(new Uri(ServiceAddress, "Surveys/" + surveyId + "/InvitationTemplates/"), invitationTemplate))
            .Returns(CreateTask(HttpStatusCode.OK, content));

            var target = new NfieldSurveyInvitationTemplatesService();

            target.InitializeNfieldConnection(mockedNfieldConnection.Object);

            var actual = target.AddAsync(surveyId, invitationTemplate).Result;

            Assert.Equal(expected, actual, new InvitationTemplateComparer());
        }