summaryrefslogtreecommitdiff
path: root/src/test/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/p4square/ccbapi/CCBAPIClientTest.java63
-rw-r--r--src/test/java/com/p4square/ccbapi/serializer/AddressFormSerializerTest.java101
-rw-r--r--src/test/java/com/p4square/ccbapi/serializer/IndividualProfileSerializerTest.java203
-rw-r--r--src/test/java/com/p4square/ccbapi/serializer/PhoneFormSerializerTest.java97
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