Package org.springmodules.prevayler.system

Source Code of org.springmodules.prevayler.system.DefaultPrevalentSystemTest

package org.springmodules.prevayler.system;

import java.util.List;
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.OfficeImpl;
import org.springmodules.prevayler.support.PrevaylerConfigurationException;
import org.springmodules.prevayler.support.PrevaylerUnsavedObjectException;

/**
* @author Sergio Bossa
*/
public class DefaultPrevalentSystemTest extends TestCase {
   
    private DefaultPrevalentSystem prevalentSystem;
   
    public DefaultPrevalentSystemTest(String testName) {
        super(testName);
    }

    protected void setUp() throws Exception {
        PrevalenceInfo info = new PrevalenceInfo();
        info.setPrevalentClasses(new Class[]{Employee.class});
       
        this.prevalentSystem = new DefaultPrevalentSystem();
        this.prevalentSystem.setPrevalenceInfo(info);
    }

    public void testSave() {
        EmployeeImpl emp = new EmployeeImpl("a1");
       
        // Id null before adding:
        assertNull(emp.getId());
       
        emp = (EmployeeImpl) this.prevalentSystem.save(emp);
       
        // Id not null after adding:
        assertNotNull(emp.getId());
    }
   
    public void testCascadeSave() {
        // Create and save the manager:
        ManagerImpl man1 = new ManagerImpl("m1");
        man1 = (ManagerImpl) this.prevalentSystem.save(man1);
       
        // Create an employee and add it to the manager:
        EmployeeImpl emp1 = new EmployeeImpl("a1");
        man1.addManagedEmployee(emp1);
        // Update the manager and save the employee by cascade:
        man1 = (ManagerImpl) this.prevalentSystem.update(man1);
       
        // Verify that the id has been set:
        assertNotNull(emp1.getId());
       
        // Verify object identities:
        EmployeeImpl empA = (EmployeeImpl) this.prevalentSystem.get(Employee.class, emp1.getId());
        EmployeeImpl empB = (EmployeeImpl) man1.getManagedEmployees().iterator().next();
        assertSame(emp1, empA);
        assertSame(empA, empB);
    }
   
    public void testSaveEntityClassNotConfigured() {
        OfficeImpl o1 = new OfficeImpl("o1", "Office 1");
       
        try {
            // Save an object whose class is not configured as prevalent:
            this.prevalentSystem.save(o1);
            fail("Save must fail!");
        }
        catch(PrevaylerConfigurationException ex) { 
        }
    }

    public void testUpdate() {
        EmployeeImpl emp = new EmployeeImpl("a1");
       
        // Add an employee:
        emp = (EmployeeImpl) this.prevalentSystem.save(emp);
        // Firstname is null:
        assertNull(emp.getFirstname());
       
        // Set firstname:
        emp.setFirstname("Sergio");
        // Update the employee:
        this.prevalentSystem.update(emp);
        // Read and verify:
        emp = (EmployeeImpl) this.prevalentSystem.get(emp.getClass(), emp.getId());
        assertEquals("Sergio", emp.getFirstname());
    }
   
    public void testCascadeUpdate() {
        // Create and save the manager:
        ManagerImpl man1 = new ManagerImpl("m1");
        man1 = (ManagerImpl) this.prevalentSystem.save(man1);
       
        // Create an employee and add it to the manager:
        EmployeeImpl emp1 = new EmployeeImpl("a1");
        man1.addManagedEmployee(emp1);
        // Update the manager:
        man1 = (ManagerImpl) this.prevalentSystem.update(man1);
       
        // Get the employee from the manager and change employee firstname:
        emp1 = (EmployeeImpl) man1.getManagedEmployees().iterator().next();
        emp1.setFirstname("Sergio");
        // Update the manager and the employee by cascade:
        man1 = (ManagerImpl) this.prevalentSystem.update(man1);
       
        // Verify:
        emp1 = (EmployeeImpl) this.prevalentSystem.get(Employee.class, emp1.getId());
        assertEquals("Sergio", emp1.getFirstname());
    }
   
    public void testUpdateUnsavedObject() {
        EmployeeImpl emp = new EmployeeImpl("a1");
       
        try {
            // Update the transient employee:
            this.prevalentSystem.update(emp);
            fail("Update must fail!");
        }
        catch(PrevaylerUnsavedObjectException ex) { 
        }
    }

    public void testDeleteByEntity() {
        EmployeeImpl emp = new EmployeeImpl("a1");
       
        // Add an employee:
        this.prevalentSystem.save(emp);
       
        // Delete it:
        this.prevalentSystem.delete(emp);
        // Try to get it by id and verify null is returned:
        emp = (EmployeeImpl) this.prevalentSystem.get(emp.getClass(), emp.getId());
        assertNull(emp);
    }
   
    public void testDeleteByEntityClass() {
        EmployeeImpl emp = new EmployeeImpl("a1");
       
        // Add an employee:
        this.prevalentSystem.save(emp);
        // Verify:
        List result = this.prevalentSystem.get(emp.getClass());
        assertFalse(result.isEmpty());
       
        // Delete all:
        this.prevalentSystem.delete(emp.getClass());
        // Try to get all employees and verify that an empty list is returned:
        result = this.prevalentSystem.get(emp.getClass());
        assertTrue(result.isEmpty());
    }
   
    public void testDeleteUnsavedObject() {
        EmployeeImpl emp = new EmployeeImpl("a1");
       
        try {
            // Delete the transient employee:
            this.prevalentSystem.delete(emp);
            fail("Delete must fail!");
        }
        catch(PrevaylerUnsavedObjectException ex) { 
        }
    }
}
TOP

Related Classes of org.springmodules.prevayler.system.DefaultPrevalentSystemTest

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.