Package org.springmodules.prevayler.id

Source Code of org.springmodules.prevayler.id.DefaultIdMergerTest

package org.springmodules.prevayler.id;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
import org.springmodules.prevayler.test.domain.Employee;
import org.springmodules.prevayler.test.domain.EmployeeImpl;
import org.springmodules.prevayler.test.domain.ManagerImpl;
import org.springmodules.prevayler.test.domain.Office;
import org.springmodules.prevayler.test.domain.OfficeImpl;
import org.springmodules.prevayler.system.PrevalenceInfo;

/**
* @author Sergio Bossa
*/
public class DefaultIdMergerTest extends TestCase {
   
    private DefaultIdMerger merger;
   
    public DefaultIdMergerTest(String testName) {
        super(testName);
    }

    protected void setUp() throws Exception {
        PrevalenceInfo info = new PrevalenceInfo();
        info.setPrevalentClasses(new Class[]{Employee.class, Office.class});
        info.setIdGenerationStrategy(new DefaultLongIdGenerator());
        info.setIdResolutionStrategy(new DefaultIdResolver());
        this.merger = new DefaultIdMerger(info);
    }

    public void testMergeObjects() throws Exception {
        OfficeImpl o1 = new OfficeImpl("o1", "Office 1");
        ManagerImpl m1 = new ManagerImpl("m1");
        EmployeeImpl e1 = new EmployeeImpl("e1");
        o1.setId(new Long(1));
        e1.setId(new Long(2));
        e1.setOffice(o1);
        m1.setId(new Long(1));
        m1.addManagedEmployee(e1);
        m1.setOffice(o1);
       
        OfficeImpl o2 = new OfficeImpl("o1", "Office 1");
        ManagerImpl m2 = new ManagerImpl("m1");
        EmployeeImpl e2 = new EmployeeImpl("e1");
        e2.setOffice(o2);
        m2.addManagedEmployee(e2);
        m2.setOffice(o2);
       
        assertNull(o2.getId());
        assertNull(m2.getId());
        assertNull(e2.getId());
       
        this.merger.merge(m1, m2);
       
        assertNotNull(o2.getId());
        assertEquals(o1.getId(), o2.getId());
        assertNotNull(m2.getId());
        assertEquals(m1.getId(), m2.getId());
        assertNotNull(e2.getId());
        assertEquals(e1.getId(), e2.getId());
    }
   
    public void testMergeArrays() throws Exception {
        OfficeImpl o1 = new OfficeImpl("o1", "Office 1");
        ManagerImpl m1 = new ManagerImpl("m1");
        EmployeeImpl e1 = new EmployeeImpl("e1");
        o1.setId(new Long(1));
        e1.setId(new Long(2));
        e1.setOffice(o1);
        m1.setId(new Long(1));
        m1.addManagedEmployee(e1);
        m1.setOffice(o1);
       
        OfficeImpl o2 = new OfficeImpl("o1", "Office 1");
        ManagerImpl m2 = new ManagerImpl("m1");
        EmployeeImpl e2 = new EmployeeImpl("e1");
        e2.setOffice(o2);
        m2.addManagedEmployee(e2);
        m2.setOffice(o2);
       
        assertNull(o2.getId());
        assertNull(m2.getId());
        assertNull(e2.getId());
       
        Employee[] emps1 = {e1, m1};
        Employee[] emps2 = {e2, m2};
       
        this.merger.merge(emps1, emps2);
       
        assertNotNull(o2.getId());
        assertEquals(o1.getId(), o2.getId());
        assertNotNull(m2.getId());
        assertEquals(m1.getId(), m2.getId());
        assertNotNull(e2.getId());
        assertEquals(e1.getId(), e2.getId());
    }
   
    public void testMergeCollections() throws Exception {
        OfficeImpl o1 = new OfficeImpl("o1", "Office 1");
        ManagerImpl m1 = new ManagerImpl("m1");
        EmployeeImpl e1 = new EmployeeImpl("e1");
        o1.setId(new Long(1));
        e1.setId(new Long(2));
        e1.setOffice(o1);
        m1.setId(new Long(1));
        m1.addManagedEmployee(e1);
        m1.setOffice(o1);
       
        OfficeImpl o2 = new OfficeImpl("o1", "Office 1");
        ManagerImpl m2 = new ManagerImpl("m1");
        EmployeeImpl e2 = new EmployeeImpl("e1");
        e2.setOffice(o2);
        m2.addManagedEmployee(e2);
        m2.setOffice(o2);
       
        assertNull(o2.getId());
        assertNull(m2.getId());
        assertNull(e2.getId());
       
        Set emps1 = new HashSet(Arrays.asList(new Employee[]{e1, m1}));
        Set emps2 = new HashSet(Arrays.asList(new Employee[]{e2, m2}));
       
        this.merger.merge(emps1, emps2);
       
        assertNotNull(o2.getId());
        assertEquals(o1.getId(), o2.getId());
        assertNotNull(m2.getId());
        assertEquals(m1.getId(), m2.getId());
        assertNotNull(e2.getId());
        assertEquals(e1.getId(), e2.getId());
    }
   
    public void testMergeMaps() throws Exception {
        OfficeImpl o1 = new OfficeImpl("o1", "Office 1");
        ManagerImpl m1 = new ManagerImpl("m1");
        EmployeeImpl e1 = new EmployeeImpl("e1");
        o1.setId(new Long(1));
        e1.setId(new Long(2));
        e1.setOffice(o1);
        m1.setId(new Long(1));
        m1.addManagedEmployee(e1);
        m1.setOffice(o1);
       
        OfficeImpl o2 = new OfficeImpl("o1", "Office 1");
        ManagerImpl m2 = new ManagerImpl("m1");
        EmployeeImpl e2 = new EmployeeImpl("e1");
        e2.setOffice(o2);
        m2.addManagedEmployee(e2);
        m2.setOffice(o2);
       
        assertNull(o2.getId());
        assertNull(m2.getId());
        assertNull(e2.getId());
       
        Map emps1 = new HashMap();
        Map emps2 = new HashMap();
        emps1.put(e1.getMatriculationCode(), e1);
        emps1.put(m1.getMatriculationCode(), m1);
        emps2.put(e2.getMatriculationCode(), e2);
        emps2.put(m2.getMatriculationCode(), m2);
       
        this.merger.merge(emps1, emps2);
       
        assertNotNull(o2.getId());
        assertNotNull(m2.getId());
        assertNotNull(e2.getId());
    }
}
TOP

Related Classes of org.springmodules.prevayler.id.DefaultIdMergerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.