/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.core.salesforce.adapter; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import org.apache.commons.io.IOUtils; import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; import org.junit.Test; import org.orcid.core.salesforce.model.CommunityType; import org.orcid.core.salesforce.model.Contact; import org.orcid.core.salesforce.model.ContactRoleType; import org.orcid.core.salesforce.model.Member; import org.orcid.core.salesforce.model.Opportunity; /** * * @author Will Simpson * */ public class SalesForceAdapterTest { private SalesForceAdapter salesForceAdapter = new SalesForceAdapter(); private SalesForceMapperFacadeFactory salesForceMapperFacadeFactory = new SalesForceMapperFacadeFactory(); { try { salesForceAdapter.setMapperFacade(salesForceMapperFacadeFactory.getMemberMapperFacade()); } catch (Exception e) { throw new RuntimeException("Error initializing mapper", e); } } @Test public void testCreateMemberFromSalesForceRecord() throws IOException, JSONException { String inputString = IOUtils.toString(getClass().getResourceAsStream("/org/orcid/core/salesforce/salesforce_members_list.json")); JSONObject inputObject = new JSONObject(inputString); JSONArray records = inputObject.getJSONArray("records"); Member member = salesForceAdapter.createMemberFromSalesForceRecord(records.getJSONObject(0)); assertEquals("001J000001pZwWXIA0", member.getId()); assertEquals("Org 2 Consortium Member", member.getName()); assertEquals("001J000001pZwWXIA0-org-2-consortium-member", member.getSlug()); assertEquals("http://org2.edu", member.getWebsiteUrl().toString()); assertEquals(CommunityType.RESEARCH_INSTITUTE, member.getResearchCommunity()); assertEquals("New Zealand", member.getCountry()); assertEquals("This is the public display description for Org 2 Consortium Member", member.getDescription()); assertEquals("https://dl.dropboxusercontent.com/s/yk2tgl9ze7z7y2g/test_logo.png", member.getLogoUrl().toString()); assertEquals("orcid@org2.org", member.getPublicDisplayEmail()); assertEquals("006J000000LThfbIAD", member.getMainOpportunityId()); assertEquals("001J000001pZwWWIA0", member.getConsortiumLeadId()); } @Test public void testCreateMemberFromSalesForceRecordWithNullValues() throws IOException, JSONException { String inputString = IOUtils.toString(getClass().getResourceAsStream("/org/orcid/core/salesforce/salesforce_members_list.json")); JSONObject inputObject = new JSONObject(inputString); JSONArray records = inputObject.getJSONArray("records"); JSONObject record = records.getJSONObject(1); record.put("Name", (String) null); Member member = salesForceAdapter.createMemberFromSalesForceRecord(record); assertEquals("001J000001pZwWYIA0", member.getId()); assertNull(member.getName()); assertEquals("http://org3.edu", member.getWebsiteUrl().toString()); assertEquals(CommunityType.RESEARCH_INSTITUTE, member.getResearchCommunity()); assertEquals("New Zealand", member.getCountry()); assertEquals("This is the public display description for Org 3 Consortium Member", member.getDescription()); assertEquals("https://dl.dropboxusercontent.com/s/yk2tgl9ze7z7y2g/test_logo.png", member.getLogoUrl().toString()); assertEquals("orcid@org3.org", member.getPublicDisplayEmail()); assertEquals("006J000000LThfcIAD", member.getMainOpportunityId()); assertNull(member.getConsortiumLeadId()); } @Test public void testCreateMembersListFromJson() throws IOException, JSONException { String inputString = IOUtils.toString(getClass().getResourceAsStream("/org/orcid/core/salesforce/salesforce_members_list.json")); JSONObject inputObject = new JSONObject(inputString); List<Member> membersList = salesForceAdapter.createMembersListFromJson(inputObject); assertEquals(4, membersList.size()); Member member = membersList.get(0); assertEquals("001J000001pZwWXIA0", member.getId()); assertEquals("Org 2 Consortium Member", member.getName()); assertEquals("001J000001pZwWXIA0-org-2-consortium-member", member.getSlug()); assertEquals("http://org2.edu", member.getWebsiteUrl().toString()); assertEquals(CommunityType.RESEARCH_INSTITUTE, member.getResearchCommunity()); assertEquals("New Zealand", member.getCountry()); assertEquals("This is the public display description for Org 2 Consortium Member", member.getDescription()); assertEquals("https://dl.dropboxusercontent.com/s/yk2tgl9ze7z7y2g/test_logo.png", member.getLogoUrl().toString()); assertEquals("orcid@org2.org", member.getPublicDisplayEmail()); assertEquals("006J000000LThfbIAD", member.getMainOpportunityId()); assertEquals("001J000001pZwWWIA0", member.getConsortiumLeadId()); } @Test public void testCreateSalesForceRecordFromMember() throws MalformedURLException { Member member = new Member(); member.setName("Org 1 Consortium Lead New Name"); member.setWebsiteUrl(new URL("http://org1newsite.org")); JSONObject record = salesForceAdapter.createSaleForceRecordFromMember(member); assertEquals( "{\"Name\":\"Org 1 Consortium Lead New Name\",\"Public_Display_Name__c\":\"Org 1 Consortium Lead New Name\",\"Website\":\"http:\\/\\/org1newsite.org\"}", record.toString()); } @Test public void testCreateOpportunityFromSalesForceRecord() throws IOException, JSONException { String inputString = IOUtils.toString(getClass().getResourceAsStream("/org/orcid/core/salesforce/salesforce_opportunities_list.json")); JSONArray inputArray = new JSONArray(inputString); Opportunity opportunity = salesForceAdapter.createOpportunityFromSalesForceRecord(inputArray.getJSONObject(1)); assertEquals("[ORG2 ACCOUNT ID]", opportunity.getTargetAccountId()); assertEquals("Invoice Paid", opportunity.getStageName()); assertEquals("2016-12-21", opportunity.getCloseDate()); assertEquals("New", opportunity.getType()); assertEquals("[PREMIUM CONSORTIUM MEMBER ID]", opportunity.getMemberType()); assertEquals("2017-01-01", opportunity.getMembershipStartDate()); assertEquals("2017-12-31", opportunity.getMembershipEndDate()); assertEquals("[ORG1 ACCOUNT ID]", opportunity.getConsortiumLeadId()); assertEquals("2017 Membership-Org 2 Consortium Member", opportunity.getName()); assertEquals("[CONSORTIUM MEMBER RECORD TYPE ID]", opportunity.getRecordTypeId()); } @Test public void testCreateContactFromJson() throws IOException, JSONException { String inputString = IOUtils.toString(getClass().getResourceAsStream("/org/orcid/core/salesforce/salesforce_contacts_list.json")); JSONObject inputObject = new JSONObject(inputString); JSONArray records = inputObject.getJSONArray("records"); JSONObject record = records.getJSONObject(0); JSONObject contactRoles = record.getJSONObject("Membership_Contact_Roles__r"); JSONArray contactRoleRecords = contactRoles.getJSONArray("records"); JSONObject contactRole = contactRoleRecords.getJSONObject(0); Contact contact = salesForceAdapter.createContactFromJson(contactRole); assertEquals("Contact1FirstName Contact1LastName", contact.getName()); assertEquals("contact1@mailinator.com", contact.getEmail()); assertEquals(ContactRoleType.MAIN_CONTACT, contact.getRole().getRoleType()); } @Test public void testCreateContactsFromJson() throws IOException, JSONException { String inputString = IOUtils.toString(getClass().getResourceAsStream("/org/orcid/core/salesforce/salesforce_contacts_list.json")); JSONObject inputObject = new JSONObject(inputString); List<Contact> contactsList = salesForceAdapter.createContactsWithRolesFromJson(inputObject); assertEquals(2, contactsList.size()); Contact contact = contactsList.get(0); assertEquals("Contact1FirstName Contact1LastName", contact.getName()); assertEquals("contact1@mailinator.com", contact.getEmail()); assertEquals(ContactRoleType.MAIN_CONTACT, contact.getRole().getRoleType()); } @Test public void testCreateSalesForceRecordFromContact() { Contact contact = new Contact(); contact.setAccountId("1234"); JSONObject contactJson = salesForceAdapter.createSaleForceRecordFromContact(contact); assertEquals("{\"AccountId\":\"1234\"}", contactJson.toString()); } }