Package org.springmodules.jcr.mapping

Source Code of org.springmodules.jcr.mapping.JcrMappingTemplateTests

package org.springmodules.jcr.mapping;

import java.util.ArrayList;
import java.util.List;

import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.ValueFactory;

import junit.framework.TestCase;

import org.apache.portals.graffito.jcr.exception.JcrMappingException;
import org.apache.portals.graffito.jcr.mapper.Mapper;
import org.apache.portals.graffito.jcr.persistence.PersistenceManager;
import org.apache.portals.graffito.jcr.query.Query;
import org.easymock.MockControl;
import org.springmodules.jcr.JcrSystemException;
import org.springmodules.jcr.SessionFactory;

public class JcrMappingTemplateTests extends TestCase {

    private JcrMappingTemplate template;

    MockControl factoryCtrl;

    SessionFactory factory;

    MockControl sessionCtrl;

    Session session;

    MockControl valueFactoryCtrl;

    ValueFactory valueFactory;

    MockControl managerCtrl;

    PersistenceManager manager;

    MockControl mapperCtrl;

    Mapper mapper;

    protected void setUp() throws Exception {
        super.setUp();

        factoryCtrl = MockControl.createControl(SessionFactory.class);
        factory = (SessionFactory) factoryCtrl.getMock();
        sessionCtrl = MockControl.createControl(Session.class);
        session = (Session) sessionCtrl.getMock();
        valueFactoryCtrl = MockControl.createControl(ValueFactory.class);
        valueFactory = (ValueFactory) valueFactoryCtrl.getMock();
        managerCtrl = MockControl.createControl(PersistenceManager.class);
        manager = (PersistenceManager) managerCtrl.getMock();
        mapperCtrl = MockControl.createControl(Mapper.class);
        mapper = (Mapper) mapperCtrl.getMock();

        // add the mock for testing
        template = new JcrMappingTemplate(factory, mapper) {

            /**
             * @see org.springmodules.jcr.mapping.JcrMappingTemplate#createPersistenceManager(javax.jcr.Session)
             */
            protected PersistenceManager createPersistenceManager(Session session) throws RepositoryException, JcrMappingException {
                return manager;
            }

        };
    }

    protected void tearDown() throws Exception {
        super.tearDown();

        try {
            factoryCtrl.verify();
            sessionCtrl.verify();
            valueFactoryCtrl.verify();
            managerCtrl.verify();
            mapperCtrl.verify();
        } catch (IllegalStateException e) {
        }
    }

    public void testAfterPropertiesSet() throws Exception {
        template.setMapper((Mapper) null);
        try {
            template.afterPropertiesSet();
        } catch (IllegalArgumentException e) {
            // it's okay
        }
    }

    /*
     * Test method for 'org.springmodules.jcr.mapping.JcrMappingTemplate.execute(JcrMappingCallback, boolean)'
     */
    public void testExecuteJcrMappingCallbackBoolean() throws Exception {
        template.setAllowCreate(true);

        factoryCtrl.expectAndReturn(factory.getSession(), session);
        session.logout();

        factoryCtrl.replay();
        sessionCtrl.replay();
        valueFactoryCtrl.replay();

        template.execute(new JcrMappingCallback() {
            public Object doInJcrMapping(PersistenceManager manager) throws JcrMappingException {
                assertNotNull("persistenceManager is null", manager);
                return null;
            }
        });
    }

    /*
     * Test method for 'org.springmodules.jcr.mapping.JcrMappingTemplate.insert(String, Object)'
     */
    public void testInsert() throws Exception {
        template.setAllowCreate(true);

        factoryCtrl.expectAndReturn(factory.getSession(), session);
        session.logout();

        final String path = new String("some string");
        final Object obj = new Object();

        manager.insert(path, obj);

        managerCtrl.replay();
        factoryCtrl.replay();
        sessionCtrl.replay();
        valueFactoryCtrl.replay();

        template.insert(path, obj);
    }

    /*
     * Test method for 'org.springmodules.jcr.mapping.JcrMappingTemplate.update(String, Object)'
     */
    public void testUpdate() throws Exception {
        template.setAllowCreate(true);

        factoryCtrl.expectAndReturn(factory.getSession(), session);
        session.logout();

        final String path = new String("some string");
        final Object obj = new Object();

        manager.update(path, obj);

        managerCtrl.replay();
        factoryCtrl.replay();
        sessionCtrl.replay();
        valueFactoryCtrl.replay();

        template.update(path, obj);
    }

    /*
     * Test method for 'org.springmodules.jcr.mapping.JcrMappingTemplate.remove(String)'
     */
    public void testRemove() throws Exception {
        template.setAllowCreate(true);

        factoryCtrl.expectAndReturn(factory.getSession(), session);
        session.logout();

        final String path = new String("some string");
        final Object obj = new Object();

        manager.remove(path);

        managerCtrl.replay();
        factoryCtrl.replay();
        sessionCtrl.replay();
        valueFactoryCtrl.replay();

        template.remove(path);
    }

    /*
     * Test method for 'org.springmodules.jcr.mapping.JcrMappingTemplate.getObject(Class, String)'
     */
    public void testGetObject() throws Exception {
        template.setAllowCreate(true);

        factoryCtrl.expectAndReturn(factory.getSession(), session);
        session.logout();

        final Object obj = new Object();
        final String path = new String("some string");
        final Class clazz = obj.getClass();

        managerCtrl.expectAndReturn(manager.getObject(clazz, path), obj);

        managerCtrl.replay();
        factoryCtrl.replay();
        sessionCtrl.replay();
        valueFactoryCtrl.replay();

        assertSame("not the same object", obj, template.getObject(clazz, path));
    }

    /*
     * Test method for 'org.springmodules.jcr.mapping.JcrMappingTemplate.getObjects(Query)'
     */
    public void testGetObjects() throws Exception {
        template.setAllowCreate(true);

        factoryCtrl.expectAndReturn(factory.getSession(), session);
        session.logout();

        final List list = new ArrayList();
        MockControl queryCtrl = MockControl.createControl(Query.class);
        Query query = (Query) queryCtrl.getMock();

        managerCtrl.expectAndReturn(manager.getObjects(query), list);

        managerCtrl.replay();
        factoryCtrl.replay();
        sessionCtrl.replay();
        valueFactoryCtrl.replay();

        assertSame("not the same collection", list, template.getObjects(query));
    }

    /*
     * Test method for 'org.springmodules.jcr.mapping.JcrMappingTemplate.convertMappingAccessException(Exception)'
     */
    public void testConvertMappingAccessException() throws Exception {
        template.setAllowCreate(true);

        try {
            createTemplate().execute(new JcrMappingCallback() {
                public Object doInJcrMapping(PersistenceManager manager) throws JcrMappingException {
                    throw new JcrMappingException("some jcr mapping exception");
                }
            });
            fail("Should have thrown JcrSystemException");
        } catch (JcrSystemException e) {
            // expected
        }
    }

    private JcrMappingOperations createTemplate() throws Exception {

        factoryCtrl.reset();
        factoryCtrl.expectAndReturn(factory.getSession(), session);
        sessionCtrl.expectAndReturn(session.getValueFactory(), valueFactory, 14);
        session.logout();

        JcrMappingTemplate mappingTemplate = new JcrMappingTemplate(factory, mapper);
        mappingTemplate.setAllowCreate(true);
        sessionCtrl.replay();
        mapperCtrl.replay();
        factoryCtrl.replay();

        return mappingTemplate;
    }

}
TOP

Related Classes of org.springmodules.jcr.mapping.JcrMappingTemplateTests

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.