diff options
Diffstat (limited to 'src/test/java/com/p4square/ccbapi')
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 |