package org.familysearch.platform.ct;
import org.gedcomx.common.ResourceReference;
import org.gedcomx.common.URI;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
/**
* @author Mike Gardiner
*/
public class PersonMergeTest {
@Test
public void testMerge() {
Merge merge = new Merge();
List<ResourceReference> copyReferences = new ArrayList<ResourceReference>();
ResourceReference resourceReference = new ResourceReference(URI.create("copy1"));
copyReferences.add(resourceReference);
resourceReference = new ResourceReference(URI.create("copy2"));
copyReferences.add(resourceReference);
resourceReference = new ResourceReference(URI.create("copy3"));
copyReferences.add(resourceReference);
merge.setResourcesToCopy( copyReferences );
List<ResourceReference> deleteReferences = new ArrayList<ResourceReference>();
resourceReference = new ResourceReference(URI.create("delete1"));
deleteReferences.add(resourceReference);
resourceReference = new ResourceReference(URI.create("delete2"));
deleteReferences.add(resourceReference);
merge.setResourcesToDelete( deleteReferences );
assertNotNull(merge.getResourcesToCopy());
assertEquals(3, merge.getResourcesToCopy().size());
assertEquals("copy1", merge.getResourcesToCopy().get(0).toString());
assertEquals("copy2", merge.getResourcesToCopy().get(1).toString());
assertEquals("copy3", merge.getResourcesToCopy().get(2).toString());
assertNotNull( merge.getResourcesToDelete() );
assertEquals(2, merge.getResourcesToDelete().size());
assertEquals("delete1", merge.getResourcesToDelete().get( 0 ).toString());
assertEquals("delete2", merge.getResourcesToDelete().get( 1 ).toString());
}
@Test
public void testMergeAnalysis() {
MergeAnalysis mergeAnalysis = new MergeAnalysis();
mergeAnalysis.setSurvivor(new ResourceReference(URI.create("person1")));
mergeAnalysis.setDuplicate( new ResourceReference( URI.create( "person2" ) ) );
// Surviving Resource References
List<ResourceReference> survivingReferences = new ArrayList<ResourceReference>();
ResourceReference resourceReference = new ResourceReference(URI.create("surviving1"));
survivingReferences.add(resourceReference);
resourceReference = new ResourceReference(URI.create("surviving2"));
survivingReferences.add(resourceReference);
resourceReference = new ResourceReference(URI.create("surviving3"));
survivingReferences.add(resourceReference);
mergeAnalysis.setSurvivorResources( survivingReferences );
// Non-surviving Resource References
List<ResourceReference> nonSurvivingReferences = new ArrayList<ResourceReference>();
resourceReference = new ResourceReference(URI.create("nonSurviving1"));
nonSurvivingReferences.add(resourceReference);
resourceReference = new ResourceReference(URI.create("nonSurviving2"));
nonSurvivingReferences.add(resourceReference);
mergeAnalysis.setDuplicateResources( nonSurvivingReferences );
// Conflicting Resource References
List<MergeConflict> conflictingReferences = new ArrayList<MergeConflict>();
MergeConflict conflict = new MergeConflict(new ResourceReference(URI.create("person1")), new ResourceReference(URI.create("person2")));
conflictingReferences.add(conflict);
conflict = new MergeConflict();
conflict.setSurvivorResource( new ResourceReference( URI.create( "person3" ) ) );
conflict.setDuplicateResource( new ResourceReference( URI.create( "person4" ) ) );
conflictingReferences.add(conflict);
conflict = new MergeConflict(new ResourceReference(URI.create("person5")), new ResourceReference(URI.create("person6")));
conflictingReferences.add(conflict);
mergeAnalysis.setConflictingResources(conflictingReferences);
assertNotNull(mergeAnalysis.getSurvivor());
assertNotNull("person1", mergeAnalysis.getSurvivor().getResource().toString());
assertNotNull(mergeAnalysis.getDuplicate());
assertNotNull("person2", mergeAnalysis.getDuplicate().getResource().toString());
assertNotNull(mergeAnalysis.getSurvivorResources());
assertEquals(3, mergeAnalysis.getSurvivorResources().size());
assertEquals("surviving1", mergeAnalysis.getSurvivorResources().get(0).toString());
assertEquals("surviving2", mergeAnalysis.getSurvivorResources().get(1).toString());
assertEquals("surviving3", mergeAnalysis.getSurvivorResources().get(2).toString());
assertNotNull( mergeAnalysis.getDuplicateResources() );
assertEquals(2, mergeAnalysis.getDuplicateResources().size());
assertEquals("nonSurviving1", mergeAnalysis.getDuplicateResources().get(0).toString());
assertEquals("nonSurviving2", mergeAnalysis.getDuplicateResources().get(1).toString());
assertNotNull(mergeAnalysis.getConflictingResources());
assertEquals(3, mergeAnalysis.getConflictingResources().size());
assertEquals("person1", mergeAnalysis.getConflictingResources().get(0).getSurvivorResource().toString());
assertEquals("person2", mergeAnalysis.getConflictingResources().get(0).getDuplicateResource().toString());
assertEquals("person3", mergeAnalysis.getConflictingResources().get(1).getSurvivorResource().toString());
assertEquals("person4", mergeAnalysis.getConflictingResources().get(1).getDuplicateResource().toString());
assertEquals("person5", mergeAnalysis.getConflictingResources().get(2).getSurvivorResource().toString());
assertEquals("person6", mergeAnalysis.getConflictingResources().get(2).getDuplicateResource().toString());
}
}