package org.gedcomx.agent; import org.gedcomx.common.CustomEntity; import org.gedcomx.common.ResourceReference; import org.gedcomx.common.TextValue; import org.gedcomx.common.URI; import org.gedcomx.conclusion.Identifier; import org.gedcomx.rt.json.GedcomJacksonModule; import org.testng.Assert; import org.testng.AssertJUnit; import org.testng.annotations.Test; import javax.xml.bind.JAXBContext; import java.util.ArrayList; import java.util.Arrays; import static org.gedcomx.rt.SerializationUtil.processThroughJson; import static org.gedcomx.rt.SerializationUtil.processThroughXml; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNull; public class AgentTest { @Test public void testExtensionsThruXML() throws Exception { Agent agent = new Agent(); agent.setId("1234"); agent.addExtensionElement(new CustomEntity("4321")); agent.addExtensionElement(new CustomEntity("5432")); agent.getExtensionElements().add(new CustomEntity("6543")); agent = processThroughXml(agent, Agent.class, JAXBContext.newInstance(Agent.class, CustomEntity.class)); assertEquals(agent.getExtensionElements().size(), 3); assertNull(agent.findExtensionOfType(String.class)); assertEquals(agent.findExtensionOfType(CustomEntity.class).getId(), "4321"); assertEquals(agent.findExtensionsOfType(String.class).size(), 0); assertEquals(agent.findExtensionsOfType(CustomEntity.class).size(), 3); assertEquals(agent.findExtensionsOfType(CustomEntity.class).get(1).getId(), "5432"); Assert.assertEquals(((CustomEntity) agent.getExtensionElements().get(2)).getId(), "6543"); agent.setExtensionElements(null); assertNull(agent.getExtensionElements()); assertNull(agent.findExtensionOfType(CustomEntity.class)); assertEquals(agent.findExtensionsOfType(CustomEntity.class).size(), 0); } @Test public void testExtensionsThruJSON() throws Exception { Agent agent = new Agent(); agent.setId("1234"); agent.addExtensionElement(new CustomEntity("4321")); agent.addExtensionElement(new CustomEntity("5432")); agent.getExtensionElements().add(new CustomEntity("6543")); agent = processThroughJson(agent, Agent.class, GedcomJacksonModule.createObjectMapper(Agent.class, CustomEntity.class)); assertEquals(agent.getExtensionElements().size(), 3); assertEquals(agent.findExtensionOfType(CustomEntity.class).getId(), "4321"); assertEquals(agent.findExtensionsOfType(String.class).size(), 0); assertEquals(agent.findExtensionsOfType(CustomEntity.class).size(), 3); assertEquals(agent.findExtensionsOfType(CustomEntity.class).get(1).getId(), "5432"); Assert.assertEquals(((CustomEntity) agent.getExtensionElements().get(2)).getId(), "6543"); agent.setExtensionElements(null); assertNull(agent.getExtensionElements()); assertNull(agent.findExtensionOfType(CustomEntity.class)); assertEquals(agent.findExtensionsOfType(CustomEntity.class).size(), 0); } @Test public void testPersonXml() throws Exception { Agent person = createPerson(); person = processThroughXml(person); assertPerson(person); } /** * tests id json */ @Test public void testPersonJson() throws Exception { Agent person = createPerson(); person = processThroughJson(person); assertPerson(person); } private Agent createPerson() { Agent person = new Agent(); person.setAccounts(new ArrayList<OnlineAccount>()); OnlineAccount account = new OnlineAccount(); account.setAccountName("account name"); account.setServiceHomepage(new ResourceReference()); account.getServiceHomepage().setResource(URI.create("http://familysearch.org")); person.getAccounts().add(account); person.setAddresses(new ArrayList<Address>()); Address address = new Address(); address.setValue("street1\nstreet2\nstreet3\ncity UT, 88888\ncountry"); address.setCity("city"); address.setCountry("country"); address.setPostalCode("88888"); address.setStateOrProvince("UT"); address.setStreet("street1"); address.setStreet2("street2"); address.setStreet3("street3"); person.getAddresses().add(address); person.setEmails(new ArrayList<ResourceReference>()); ResourceReference email = new ResourceReference(); email.setResource(URI.create("mailto:heatonra@familysearch.org")); person.getEmails().add(email); person.setHomepage(new ResourceReference(URI.create("http://familysearch.org/heatonra"))); person.setNames(Arrays.asList(new TextValue("Ryan Heaton"))); person.setOpenid(new ResourceReference(URI.create("openid"))); person.setPhones(new ArrayList<ResourceReference>()); Identifier identifier = new Identifier(); identifier.setValue(URI.create("identifier")); person.setIdentifiers(Arrays.asList(identifier)); ResourceReference phone = new ResourceReference(); phone.setResource(URI.create("tel:+18012401000")); person.getPhones().add(phone); return person; } private void assertPerson(Agent person) { AssertJUnit.assertEquals(1, person.getAccounts().size()); AssertJUnit.assertEquals("account name", person.getAccounts().get(0).getAccountName()); AssertJUnit.assertEquals("http://familysearch.org", person.getAccounts().get(0).getServiceHomepage().getResource().toString()); AssertJUnit.assertEquals(1, person.getAddresses().size()); AssertJUnit.assertEquals("street1\nstreet2\nstreet3\ncity UT, 88888\ncountry", person.getAddresses().get(0).getValue()); AssertJUnit.assertEquals("city", person.getAddresses().get(0).getCity()); AssertJUnit.assertEquals("country", person.getAddresses().get(0).getCountry()); AssertJUnit.assertEquals("88888", person.getAddresses().get(0).getPostalCode()); AssertJUnit.assertEquals("UT", person.getAddresses().get(0).getStateOrProvince()); AssertJUnit.assertEquals("street1", person.getAddresses().get(0).getStreet()); AssertJUnit.assertEquals("street2", person.getAddresses().get(0).getStreet2()); AssertJUnit.assertEquals("street3", person.getAddresses().get(0).getStreet3()); AssertJUnit.assertEquals(1, person.getEmails().size()); AssertJUnit.assertEquals("mailto:heatonra@familysearch.org", person.getEmails().get(0).getResource().toString()); AssertJUnit.assertEquals("http://familysearch.org/heatonra", person.getHomepage().getResource().toString()); AssertJUnit.assertEquals("Ryan Heaton", person.getName().getValue()); AssertJUnit.assertEquals("openid", person.getOpenid().getResource().toString()); AssertJUnit.assertEquals(1, person.getPhones().size()); AssertJUnit.assertEquals("tel:+18012401000", person.getPhones().get(0).getResource().toString()); AssertJUnit.assertEquals("identifier", person.getIdentifiers().get(0).getValue().toString()); } }