package org.gedcomx.conclusion;
import org.gedcomx.common.Attribution;
import org.gedcomx.common.ResourceReference;
import org.gedcomx.source.SourceReference;
import org.gedcomx.common.URI;
import org.gedcomx.types.RelationshipType;
import org.testng.annotations.Test;
import java.util.Arrays;
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.assertNotNull;
/**
* @author Ryan Heaton
*/
@Test
public class RelationshipTest {
/**
* tests processing a relationship through xml...
*/
public void testRelationshipXml() throws Exception {
Relationship relationship = createTestRelationship();
relationship = processThroughXml(relationship);
assertTestRelationship(relationship);
}
/**
* tests processing a relationship through json...
*/
public void testPersonJson() throws Exception {
Relationship relationship = createTestRelationship();
relationship = processThroughJson(relationship);
assertTestRelationship(relationship);
}
private Relationship createTestRelationship() {
Relationship relationship = new Relationship();
relationship.setId("relationship");
relationship.addSource(new SourceReference());
relationship.getSources().get(0).setDescriptionRef(URI.create("urn:sourceDescription1"));
relationship.setKnownType(RelationshipType.Couple);
relationship.setPerson1(new ResourceReference(URI.create("urn:person1")));
relationship.setPerson2(new ResourceReference(URI.create("urn:person2")));
relationship.addFact(new Fact());
relationship.getFacts().get(0).setId("fact");
relationship.addFact(new Fact());
relationship.getFacts().get(1).setId("event");
relationship.setIdentifiers(Arrays.asList(new Identifier()));
relationship.getIdentifiers().get(0).setType(URI.create("urn:identifierType"));
relationship.getIdentifiers().get(0).setValue(URI.create("urn:identifierValue"));
relationship.setAttribution(new Attribution());
relationship.getAttribution().setChangeMessage("explanation");
return relationship;
}
private void assertTestRelationship(Relationship relationship) {
assertEquals("relationship", relationship.getId());
assertNotNull(relationship.getSources());
assertEquals(1, relationship.getSources().size());
assertEquals(URI.create("urn:sourceDescription1"), relationship.getSources().get(0).getDescriptionRef());
assertEquals(RelationshipType.Couple, relationship.getKnownType());
assertEquals(URI.create("urn:person1"), relationship.getPerson1().getResource());
assertEquals(URI.create("urn:person2"), relationship.getPerson2().getResource());
assertNotNull(relationship.getFacts());
assertEquals(2, relationship.getFacts().size());
assertEquals("fact", relationship.getFacts().get(0).getId());
assertEquals("event", relationship.getFacts().get(1).getId());
assertNotNull(relationship.getIdentifiers());
assertEquals(1, relationship.getIdentifiers().size());
assertEquals(URI.create("urn:identifierType"), relationship.getIdentifiers().get(0).getType());
assertEquals(URI.create("urn:identifierValue"), relationship.getIdentifiers().get(0).getValue());
assertEquals("explanation", relationship.getAttribution().getChangeMessage());
}
}