diff options
| author | Jesse Morgan <jesse@jesterpm.net> | 2016-03-27 08:02:14 -0700 | 
|---|---|---|
| committer | Jesse Morgan <jesse@jesterpm.net> | 2016-03-27 08:02:14 -0700 | 
| commit | 6d987e0dd18ef830484641166a816661f4b16074 (patch) | |
| tree | effaccb0a85cebca64e39ea8aa4545d59306cfc6 /src/test/java | |
| parent | f4cb9e6a44c016c0200a9291f25003c72e2551cd (diff) | |
Adding the update_individual API
Diffstat (limited to 'src/test/java')
4 files changed, 452 insertions, 12 deletions
| diff --git a/src/test/java/com/p4square/ccbapi/CCBAPIClientTest.java b/src/test/java/com/p4square/ccbapi/CCBAPIClientTest.java index b15d16f..69f50c2 100644 --- a/src/test/java/com/p4square/ccbapi/CCBAPIClientTest.java +++ b/src/test/java/com/p4square/ccbapi/CCBAPIClientTest.java @@ -2,9 +2,7 @@ package com.p4square.ccbapi;  import com.p4square.ccbapi.exception.CCBErrorResponseException;  import com.p4square.ccbapi.exception.CCBRetryableErrorException; -import com.p4square.ccbapi.model.GetCustomFieldLabelsResponse; -import com.p4square.ccbapi.model.GetIndividualProfilesRequest; -import com.p4square.ccbapi.model.GetIndividualProfilesResponse; +import com.p4square.ccbapi.model.*;  import org.junit.Before;  import java.io.IOException; @@ -16,6 +14,7 @@ import java.util.Map;  import org.easymock.EasyMock;  import org.junit.Test; +import org.junit.rules.ExpectedException;  import static org.junit.Assert.*; @@ -51,7 +50,7 @@ public class CCBAPIClientTest {          // Set expectation.          URI expectedURI = new URI("https://localhost:8080/api.php?srv=custom_field_labels");          InputStream is = getClass().getResourceAsStream("model/ccb_custom_field_labels_response.xml"); -        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, Collections.<String, String>emptyMap())) +        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, null))                  .andReturn(is);          EasyMock.replay(mockHttpClient); @@ -72,7 +71,7 @@ public class CCBAPIClientTest {          // Set expectation.          URI expectedURI = new URI("https://localhost:8080/api.php?srv=custom_field_labels");          InputStream is = getClass().getResourceAsStream("model/ccb_error_response.xml"); -        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, Collections.<String, String>emptyMap())) +        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, null))                  .andReturn(is);          EasyMock.replay(mockHttpClient); @@ -92,7 +91,7 @@ public class CCBAPIClientTest {      @Test(expected = CCBRetryableErrorException.class)      public void testGetCustomFieldLabelsTimeout() throws Exception {          // Setup mocks. -        EasyMock.expect(mockHttpClient.sendPostRequest(EasyMock.anyObject(URI.class), EasyMock.anyObject(Map.class))) +        EasyMock.expect(mockHttpClient.sendPostRequest(EasyMock.anyObject(URI.class), EasyMock.anyObject()))                  .andThrow(new CCBRetryableErrorException("Retryable error"));          EasyMock.replay(mockHttpClient); @@ -103,7 +102,7 @@ public class CCBAPIClientTest {      @Test(expected = IOException.class)      public void testGetCustomFieldLabelsException() throws Exception {          // Setup mocks. -        EasyMock.expect(mockHttpClient.sendPostRequest(EasyMock.anyObject(URI.class), EasyMock.anyObject(Map.class))) +        EasyMock.expect(mockHttpClient.sendPostRequest(EasyMock.anyObject(URI.class), EasyMock.anyObject()))                  .andThrow(new IOException());          EasyMock.replay(mockHttpClient); @@ -116,7 +115,7 @@ public class CCBAPIClientTest {          // Set expectation.          URI expectedURI = new URI("https://localhost:8080/api.php?srv=individual_profile_from_id&individual_id=48");          InputStream is = getClass().getResourceAsStream("model/ccb_individual_profile_response.xml"); -        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, Collections.<String, String>emptyMap())) +        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, null))                  .andReturn(is);          EasyMock.replay(mockHttpClient); @@ -137,7 +136,7 @@ public class CCBAPIClientTest {          URI expectedURI = new URI("https://localhost:8080/api.php?"                  + "srv=individual_profile_from_login_password&password=pass&login=user");          InputStream is = getClass().getResourceAsStream("model/ccb_individual_profile_response.xml"); -        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, Collections.<String, String>emptyMap())) +        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, null))                  .andReturn(is);          EasyMock.replay(mockHttpClient); @@ -159,7 +158,7 @@ public class CCBAPIClientTest {          URI expectedURI = new URI("https://localhost:8080/api.php?"                  + "srv=individual_profile_from_micr&account_number=4567&routing_number=1234");          InputStream is = getClass().getResourceAsStream("model/ccb_individual_profile_response.xml"); -        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, Collections.<String, String>emptyMap())) +        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, null))                  .andReturn(is);          EasyMock.replay(mockHttpClient); @@ -179,7 +178,7 @@ public class CCBAPIClientTest {          // Set expectation.          URI expectedURI = new URI("https://localhost:8080/api.php?srv=individual_profiles");          InputStream is = getClass().getResourceAsStream("model/ccb_individual_profile_response.xml"); -        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, Collections.<String, String>emptyMap())) +        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, null))                  .andReturn(is);          EasyMock.replay(mockHttpClient); @@ -200,7 +199,7 @@ public class CCBAPIClientTest {          URI expectedURI = new URI("https://localhost:8080/api.php?srv=individual_profiles"                  + "&per_page=15&include_inactive=true&modified_since=2016-03-19&page=5");          InputStream is = getClass().getResourceAsStream("model/ccb_individual_profile_response.xml"); -        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, Collections.<String, String>emptyMap())) +        EasyMock.expect(mockHttpClient.sendPostRequest(expectedURI, null))                  .andReturn(is);          EasyMock.replay(mockHttpClient); @@ -219,6 +218,46 @@ public class CCBAPIClientTest {          assertEquals(48, response.getIndividuals().get(0).getId());      } +    @Test +    public void testUpdateIndividual() throws Exception { +        // Set expectation. +        URI expectedURI = new URI("https://localhost:8080/api.php?srv=update_individual&individual_id=48"); +        InputStream is = getClass().getResourceAsStream("model/ccb_individual_profile_response.xml"); +        EasyMock.expect(mockHttpClient.sendPostRequest(EasyMock.eq(expectedURI), +                    EasyMock.aryEq("legal_first_name=Larabar".getBytes("UTF-8")))) +                .andReturn(is); +        EasyMock.replay(mockHttpClient); + +        UpdateIndividualProfileRequest request = new UpdateIndividualProfileRequest() +                .withIndividualId(48) +                .withLegalFirstName("Larabar"); + +        // Test update_individual. +        UpdateIndividualProfileResponse response = client.updateIndividualProfile(request); + +        // Verify results. +        EasyMock.verify(mockHttpClient); +        assertNull(response.getErrors()); +        assertEquals(1, response.getIndividuals().size()); +        assertEquals(48, response.getIndividuals().get(0).getId()); +    } + +    /** +     * This test ensures {@link CCBAPIClient#updateIndividualProfile(UpdateIndividualProfileRequest)} +     * throws an exception if the individualId property isn't set on the request. +     */ +    @Test(expected = IllegalArgumentException.class) +    public void testUpdateIndividualWithoutIndividualId() throws Exception { +        // Set expectation. +        UpdateIndividualProfileRequest request = new UpdateIndividualProfileRequest() +                .withLegalFirstName("Larabar"); + +        // Test update_individual. +        UpdateIndividualProfileResponse response = client.updateIndividualProfile(request); + +       // Expect exception. +    } +      /**       * Simple extension of CCBAPIClient to swap out the HTTPInterface with a mock.       */ diff --git a/src/test/java/com/p4square/ccbapi/serializer/AddressFormSerializerTest.java b/src/test/java/com/p4square/ccbapi/serializer/AddressFormSerializerTest.java new file mode 100644 index 0000000..0275358 --- /dev/null +++ b/src/test/java/com/p4square/ccbapi/serializer/AddressFormSerializerTest.java @@ -0,0 +1,101 @@ +package com.p4square.ccbapi.serializer; + +import com.p4square.ccbapi.model.Address; +import com.p4square.ccbapi.model.Countries; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Tests for the AddressFormSerializer. + * + * Serializer output is compared to the expected output in the update_individual API example. + */ +public class AddressFormSerializerTest { + +    private AddressFormSerializer serializer; + +    @Before +    public void setUp() { +        serializer = new AddressFormSerializer(); +    } + +    @Test +    public void testEncodeAllFields() { +        final Address address = new Address(); +        address.setType(Address.Type.MAILING); +        address.setStreetAddress("12265 Oracle Blvd, Suite 105"); +        address.setCity("Colorado Springs"); +        address.setState("CO"); +        address.setZip("80921"); +        address.setCountry(Countries.UNITED_STATES); + +        final String actual = serializer.encode(address); + +        assertEquals("mailing_street_address=12265+Oracle+Blvd%2C+Suite+105" +                     + "&mailing_city=Colorado+Springs&mailing_state=CO&mailing_zip=80921&mailing_country=US", +                     actual); +    } + +    @Test +    public void testEncodeSomeFields() { +        final Address address = new Address(); +        address.setType(Address.Type.MAILING); +        address.setStreetAddress("12265 Oracle Blvd, Suite 105"); + +        final String actual = serializer.encode(address); + +        assertEquals("mailing_street_address=12265+Oracle+Blvd%2C+Suite+105", actual); +    } + +    @Test +    public void testEncodeSomeFieldsWithExistingData() { +        final StringBuilder sb = new StringBuilder("foo=bar"); + +        final Address address = new Address(); +        address.setType(Address.Type.MAILING); +        address.setStreetAddress("12265 Oracle Blvd, Suite 105"); +        address.setCity("Colorado Springs"); + +        serializer.encode(address, sb); +        final String actual = sb.toString(); + +        assertEquals("foo=bar&mailing_street_address=12265+Oracle+Blvd%2C+Suite+105&mailing_city=Colorado+Springs", +                     actual); +    } + +    @Test +    public void testEncodeHomeAddress() { +        final Address address = new Address(); +        address.setType(Address.Type.HOME); +        address.setStreetAddress("12265 Oracle Blvd, Suite 105"); + +        final String actual = serializer.encode(address); + +        assertEquals("home_street_address=12265+Oracle+Blvd%2C+Suite+105", actual); +    } + +    @Test +    public void testEncodeWorkAddress() { +        final Address address = new Address(); +        address.setType(Address.Type.WORK); +        address.setStreetAddress("12265 Oracle Blvd, Suite 105"); + +        final String actual = serializer.encode(address); + +        assertEquals("work_street_address=12265+Oracle+Blvd%2C+Suite+105", actual); +    } + +    @Test +    public void testEncodeOtherAddress() { +        final Address address = new Address(); +        address.setType(Address.Type.OTHER); +        address.setStreetAddress("12265 Oracle Blvd, Suite 105"); + +        final String actual = serializer.encode(address); + +        assertEquals("other_street_address=12265+Oracle+Blvd%2C+Suite+105", actual); +    } + +}
\ No newline at end of file diff --git a/src/test/java/com/p4square/ccbapi/serializer/IndividualProfileSerializerTest.java b/src/test/java/com/p4square/ccbapi/serializer/IndividualProfileSerializerTest.java new file mode 100644 index 0000000..a1bb8c9 --- /dev/null +++ b/src/test/java/com/p4square/ccbapi/serializer/IndividualProfileSerializerTest.java @@ -0,0 +1,203 @@ +package com.p4square.ccbapi.serializer; + +import com.p4square.ccbapi.model.*; +import org.junit.Before; +import org.junit.Test; + +import java.time.LocalDate; +import java.util.Arrays; +import java.util.Collections; + +import static org.junit.Assert.*; + +/** + * Tests for the IndividualProfileSerializer. + * + * Serializer output is compared to the expected output in the update_individual API example. + */ +public class IndividualProfileSerializerTest { + +    private IndividualProfileSerializer serializer; + +    @Before +    public void setUp() { +        serializer = new IndividualProfileSerializer(); +    } + +    /** +     * This test sets all of the fields on an +     * {@link UpdateIndividualProfileRequest} and tries to serialize them. +     */ +    @Test +    public void testEncodeAllFields() { +        final Address mailing_address = new Address(); +        mailing_address.setType(Address.Type.MAILING); +        mailing_address.setStreetAddress("12265 Oracle Blvd, Suite 105"); +        mailing_address.setCity("Colorado Springs"); +        mailing_address.setState("CO"); +        mailing_address.setZip("80921"); +        mailing_address.setCountry(Countries.UNITED_STATES); + +        final Phone phone = new Phone(); +        phone.setType(Phone.Type.CONTACT); +        phone.setNumber("719-555-2888"); + +        final UpdateIndividualProfileRequest request = new UpdateIndividualProfileRequest() +                .withSyncId(1001) +                .withOtherId("A1001") +                .withGivingNumber("ABC123") +                .withFirstName("Larry") +                .withLastName("Bob") +                .withMiddleName("P") +                .withLegalFirstName("Larabar") +                .withSalutation("Mr.") +                .withSuffix("Jr.") +                .withFamilyId(48) +                .withFamilyPosition(FamilyPosition.PRIMARY_CONTACT) +                .withMaritalStatus(MaritalStatus.MARRIED) +                .withGender(Gender.MALE) +                .withBirthday(LocalDate.of(1966, 2, 12)) +                .withAnniversary(LocalDate.of(1989, 5, 6)) +                .withDeceased(LocalDate.of(2016, 12, 31)) +                .withMembershipDate(LocalDate.of(2010, 1, 1)) +                .withMembershipEnd(LocalDate.of(2016, 12, 1)) +                .withEmail("ken@example.com") +                .withAddresses(Collections.singletonList(mailing_address)) +                .withPhones(Collections.singletonList(phone)) +                .withEmergencyContactName("Marry Bob") +                .withAllergies("Pine Nuts") +                .withConfirmedNoAllergies(true) +                .withBaptized(true) +                .withModifiedById(12); + +        final String actual = serializer.encode(request); + +        final String expected = "sync_id=1001&other_id=A1001&giving_number=ABC123" +                        + "&first_name=Larry&last_name=Bob&middle_name=P&legal_first_name=Larabar&salutation=Mr." +                        + "&suffix=Jr.&family_id=48&family_position=h&marital_status=m&gender=m" +                        + "&birthday=1966-02-12&anniversary=1989-05-06&deceased=2016-12-31" +                        + "&membership_date=2010-01-01&membership_end=2016-12-01" +                        + "&email=ken%40example.com&emergency_contact_name=Marry+Bob" +                        + "&allergies=Pine+Nuts&confirmed_no_allergies=true&baptized=true&modifier_id=12" +                        + "&mailing_street_address=12265+Oracle+Blvd%2C+Suite+105" +                        + "&mailing_city=Colorado+Springs&mailing_state=CO&mailing_zip=80921&mailing_country=US" +                        + "&contact_phone=719-555-2888"; + +        assertEquals(expected, actual); +    } + +    @Test +    public void testEncodeSomeFields() { +        final UpdateIndividualProfileRequest request = new UpdateIndividualProfileRequest() +                .withSyncId(1001) +                .withMiddleName("P") +                .withMaritalStatus(MaritalStatus.DIVORCED) +                .withGender(Gender.FEMALE) +                .withBirthday(LocalDate.of(1966, 2, 12)); + +        final String actual = serializer.encode(request); + +        assertEquals("sync_id=1001&middle_name=P&marital_status=d&gender=f&birthday=1966-02-12", actual); +    } + +    @Test +    public void testEncodeMultipleAddresses() { +        final Address address1 = new Address(); +        address1.setType(Address.Type.HOME); +        address1.setStreetAddress("123 Happy Lane"); + +        final Address address2 = new Address(); +        address2.setType(Address.Type.WORK); +        address2.setStreetAddress("12265 Oracle Blvd, Suite 105"); + +        final UpdateIndividualProfileRequest request = new UpdateIndividualProfileRequest() +                .withAddresses(Arrays.asList(address1, address2)); + +        final String actual = serializer.encode(request); + +        assertEquals("home_street_address=123+Happy+Lane&work_street_address=12265+Oracle+Blvd%2C+Suite+105", actual); +    } + +    @Test +    public void testEncodeMultiplePhones() { +        final Phone phone1 = new Phone(); +        phone1.setType(Phone.Type.MOBILE); +        phone1.setNumber("719-555-2888"); + +        final Phone phone2 = new Phone(); +        phone2.setType(Phone.Type.EMERGENCY); +        phone2.setNumber("719-555-3999"); + +        final UpdateIndividualProfileRequest request = new UpdateIndividualProfileRequest() +                .withPhones(Arrays.asList(phone1, phone2)); + +        final String actual = serializer.encode(request); + +        assertEquals("mobile_phone=719-555-2888&phone_emergency=719-555-3999", actual); +    } + +    @Test +    public void testEncodeCustomFieldsByName() { +        final UpdateIndividualProfileRequest request = new UpdateIndividualProfileRequest() +                .withCustomTextField("udf_text_1", "Hello") +                .withCustomDateField("udf_date_1", LocalDate.of(1966, 2, 12)) +                .withCustomPulldownField("udf_pulldown_1", 12); + +        final String actual = serializer.encode(request); + +        assertEquals("udf_text_1=Hello&udf_date_1=1966-02-12&udf_pulldown_1=12", actual); +    } + +    @Test +    public void testEncodeCustomFieldsByNumber() { +        final UpdateIndividualProfileRequest request = new UpdateIndividualProfileRequest() +                .withCustomTextField(2, "Hello") +                .withCustomDateField(2, LocalDate.of(1966, 2, 12)) +                .withCustomPulldownField(2, 12); + +        final String actual = serializer.encode(request); + +        assertEquals("udf_text_2=Hello&udf_date_2=1966-02-12&udf_pulldown_2=12", actual); +    } + +    @Test +    public void testNullCustomField() { +        final UpdateIndividualProfileRequest request = new UpdateIndividualProfileRequest() +                .withCustomTextField(1, null) +                .withCustomDateField(1, null) +                .withCustomPulldownField(1, null); + +        final String actual = serializer.encode(request); +        assertEquals("", actual); +    } + +    @Test(expected = IllegalArgumentException.class) +    public void testInvalidCustomTextFieldName() { +        new UpdateIndividualProfileRequest().withCustomTextField("udf_text_13", "foo"); +    } + +    @Test(expected = IllegalArgumentException.class) +    public void testInvalidCustomTextFieldNumber() { +        new UpdateIndividualProfileRequest().withCustomTextField(0, "foo"); +    } + +    @Test(expected = IllegalArgumentException.class) +    public void testInvalidCustomDateFieldName() { +        new UpdateIndividualProfileRequest().withCustomDateField("udf_date_7", LocalDate.of(1966, 2, 12)); +    } + +    @Test(expected = IllegalArgumentException.class) +    public void testInvalidCustomDateFieldNumber() { +        new UpdateIndividualProfileRequest().withCustomDateField(0, LocalDate.of(1966, 2, 12)); +    } + +    @Test(expected = IllegalArgumentException.class) +    public void testInvalidCustomPulldownFieldName() { +        new UpdateIndividualProfileRequest().withCustomPulldownField("udf_pulldown_7", 12); +    } + +    @Test(expected = IllegalArgumentException.class) +    public void testInvalidCustomPulldownFieldNumber() { +        new UpdateIndividualProfileRequest().withCustomPulldownField(0, 12); +    } +}
\ No newline at end of file diff --git a/src/test/java/com/p4square/ccbapi/serializer/PhoneFormSerializerTest.java b/src/test/java/com/p4square/ccbapi/serializer/PhoneFormSerializerTest.java new file mode 100644 index 0000000..7074ad3 --- /dev/null +++ b/src/test/java/com/p4square/ccbapi/serializer/PhoneFormSerializerTest.java @@ -0,0 +1,97 @@ +package com.p4square.ccbapi.serializer; + +import com.p4square.ccbapi.model.Phone; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Tests for the PhoneFormSerializer. + * + * Serializer output is compared to the expected output in the update_individual API example. + */ +public class PhoneFormSerializerTest { + +    private PhoneFormSerializer serializer; + +    @Before +    public void setUp() { +        serializer = new PhoneFormSerializer(); +    } + +    @Test +    public void testEncodeContactPhone() { +        final Phone phone = new Phone(); +        phone.setType(Phone.Type.CONTACT); +        phone.setNumber("719-555-2888"); + +        final String actual = serializer.encode(phone); + +        assertEquals("contact_phone=719-555-2888", actual); +    } + +    @Test +    public void testEncodeHomePhone() { +        final Phone phone = new Phone(); +        phone.setType(Phone.Type.HOME); +        phone.setNumber("719-555-2888"); + +        final String actual = serializer.encode(phone); + +        assertEquals("home_phone=719-555-2888", actual); +    } + +    @Test +    public void testEncodeWorkPhone() { +        final Phone phone = new Phone(); +        phone.setType(Phone.Type.WORK); +        phone.setNumber("719-555-2888"); + +        final String actual = serializer.encode(phone); + +        assertEquals("work_phone=719-555-2888", actual); +    } + +    @Test +    public void testEncodeMobilePhone() { +        final Phone phone = new Phone(); +        phone.setType(Phone.Type.MOBILE); +        phone.setNumber("719-555-2888"); + +        final String actual = serializer.encode(phone); + +        assertEquals("mobile_phone=719-555-2888", actual); +    } + +    @Test +    public void testEncodeEmergencyPhone() { +        final Phone phone = new Phone(); +        phone.setType(Phone.Type.EMERGENCY); +        phone.setNumber("719-555-2888"); + +        final String actual = serializer.encode(phone); + +        assertEquals("phone_emergency=719-555-2888", actual); +    } + +    @Test +    public void testEncodeWithExistingData() { +        final StringBuilder sb = new StringBuilder(); + +        final Phone phone1 = new Phone(); +        phone1.setType(Phone.Type.MOBILE); +        phone1.setNumber("719-555-2888"); + +        final Phone phone2 = new Phone(); +        phone2.setType(Phone.Type.EMERGENCY); +        phone2.setNumber("719-555-3999"); + +        serializer.encode(phone1, sb); +        serializer.encode(phone2, sb); +        final String actual = sb.toString(); + +        assertEquals("mobile_phone=719-555-2888&phone_emergency=719-555-3999", actual); +    } + +}
\ No newline at end of file | 
