package org.gedcomx.common; import org.gedcomx.rt.GedcomNamespaceManager; import org.testng.annotations.Test; import javax.xml.bind.JAXBContext; import java.util.Date; import static org.gedcomx.rt.SerializationUtil.processThroughJson; import static org.gedcomx.rt.SerializationUtil.processThroughXml; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNull; /** * @author Ryan Heaton */ @Test public class AttributionTest { static { GedcomNamespaceManager.registerKnownJsonType(CustomEntity.class); } /** * tests attribution xml */ public void testAttributionXml() throws Exception { Date ts = new Date(); Attribution attribution = new Attribution(); attribution.setContributor(new ResourceReference()); attribution.getContributor().setResource(URI.create("urn:someid")); attribution.setModified(ts); attribution.setChangeMessage("hello, there."); attribution.addExtensionElement(new CustomEntity("alt1")); attribution.addExtensionElement(new CustomEntity("alt2")); attribution = processThroughXml(attribution, Attribution.class, JAXBContext.newInstance(Attribution.class, CustomEntity.class)); assertEquals("urn:someid", attribution.getContributor().getResource().toString()); assertEquals(ts, attribution.getModified()); assertEquals("hello, there.", attribution.getChangeMessage()); assertEquals(((CustomEntity) attribution.getExtensionElements().get(0)).getId(), "alt1"); assertEquals(((CustomEntity) attribution.getExtensionElements().get(1)).getId(), "alt2"); assertNull(attribution.findExtensionOfType(String.class)); assertEquals(attribution.findExtensionOfType(CustomEntity.class).getId(), "alt1"); assertEquals(0, attribution.findExtensionsOfType(String.class).size()); assertEquals(2, attribution.findExtensionsOfType(CustomEntity.class).size()); assertEquals(attribution.findExtensionsOfType(CustomEntity.class).get(1).getId(), "alt2"); attribution.setExtensionElements(null); assertNull(attribution.findExtensionOfType(CustomEntity.class)); assertEquals(attribution.findExtensionsOfType(CustomEntity.class).size(), 0); } /** * tests attribution json */ public void testAttributionJson() throws Exception { Date ts = new Date(); Attribution attribution = new Attribution(); attribution.setContributor(new ResourceReference()); attribution.getContributor().setResource(URI.create("urn:someid")); attribution.setModified(ts); attribution.setChangeMessage("hello, there."); attribution.addExtensionElement(new CustomEntity("alt1")); attribution.addExtensionElement(new CustomEntity("alt2")); attribution = processThroughJson(attribution); assertEquals("urn:someid", attribution.getContributor().getResource().toString()); assertEquals(ts, attribution.getModified()); assertEquals("hello, there.", attribution.getChangeMessage()); assertEquals(((CustomEntity) attribution.getExtensionElements().get(0)).getId(), "alt1"); assertEquals(((CustomEntity) attribution.getExtensionElements().get(1)).getId(), "alt2"); assertNull(attribution.findExtensionOfType(String.class)); assertEquals(attribution.findExtensionOfType(CustomEntity.class).getId(), "alt1"); assertEquals(0, attribution.findExtensionsOfType(String.class).size()); assertEquals(2, attribution.findExtensionsOfType(CustomEntity.class).size()); assertEquals(attribution.findExtensionsOfType(CustomEntity.class).get(1).getId(), "alt2"); assertEquals("urn:someid", attribution.toString()); attribution.setContributor(null); assertEquals("", attribution.toString()); } }