/**
* Created on Nov 10, 2005
*
* $Id: AbstractSessionHolderProviderManagerTests.java,v 1.2 2006/03/07 13:09:31 costin Exp $
* $Revision: 1.2 $
*/
package org.springmodules.jcr.support;
import java.util.ArrayList;
import java.util.List;
import javax.jcr.Repository;
import javax.jcr.Session;
import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springmodules.jcr.SessionFactory;
import org.springmodules.jcr.SessionHolder;
import org.springmodules.jcr.SessionHolderProvider;
/**
*
* @author Costin Leau
*
*/
public class AbstractSessionHolderProviderManagerTests extends TestCase {
AbstractSessionHolderProviderManager providerManager;
List providers;
String repositoryName;
MockControl sfCtrl, sessCtrl, repoCtrl;
Repository repo;
Session sess;
SessionFactory sf;
SessionHolderProvider customProvider;
protected void setUp() throws Exception {
super.setUp();
providers = new ArrayList();
repositoryName = "dummyRepository";
providerManager = new AbstractSessionHolderProviderManager() {
/**
* @see org.springmodules.jcr.support.AbstractSessionHolderProviderManager#getProviders()
*/
public List getProviders() {
return providers;
}
};
// build crazy mock hierarchy
sfCtrl = MockControl.createControl(SessionFactory.class);
sf = (SessionFactory) sfCtrl.getMock();
sessCtrl = MockControl.createControl(Session.class);
sess = (Session) sessCtrl.getMock();
repoCtrl = MockControl.createControl(Repository.class);
repo = (Repository) repoCtrl.getMock();
//sfCtrl.expectAndReturn(sf.getSession(), sess);
//sessCtrl.expectAndReturn(sess.getRepository(), repo);
repoCtrl.expectAndReturn(repo.getDescriptor(Repository.REP_NAME_DESC), repositoryName);
customProvider = new SessionHolderProvider() {
/**
* @see org.springmodules.jcr.SessionHolderProvider#acceptsRepository(java.lang.String)
*/
public boolean acceptsRepository(String repo) {
return repositoryName.equals(repo);
}
/**
* @see org.springmodules.jcr.SessionHolderProvider#createSessionHolder(javax.jcr.Session)
*/
public SessionHolder createSessionHolder(Session session) {
return null;
}
};
}
protected void tearDown() throws Exception {
sfCtrl.verify();
sessCtrl.verify();
repoCtrl.verify();
super.tearDown();
}
/*
* Default provider is used even on empty list.
*
* Test method for 'org.springmodules.jcr.support.AbstractSessionHolderProviderManager.getSessionProvider(SessionFactory)'
*/
public void testDefaultSessionProvider() {
// sanity check
assertSame(providers, providerManager.getProviders());
sfCtrl.replay();
sessCtrl.replay();
repoCtrl.replay();
SessionHolderProvider provider = providerManager.getSessionProvider(repo);
assertSame(GenericSessionHolderProvider.class, provider.getClass());
}
/*
* Make sure that the approapriate provider is selected
* Test method for 'org.springmodules.jcr.support.AbstractSessionHolderProviderManager.getSessionProvider(SessionFactory)'
*/
public void testCustomSessionProvider() {
// sanity check
providers = new ArrayList();
providers.add(customProvider);
sfCtrl.replay();
sessCtrl.replay();
repoCtrl.replay();
assertSame(customProvider, providerManager.getSessionProvider(repo));
}
/*
* Make sure that we fallback to default provider
*
* Test method for 'org.springmodules.jcr.support.AbstractSessionHolderProviderManager.getSessionProvider(SessionFactory)'
*/
public void testDifferentSessionProvider() {
// sanity check
customProvider = new SessionHolderProvider() {
/**
* @see org.springmodules.jcr.SessionHolderProvider#acceptsRepository(java.lang.String)
*/
public boolean acceptsRepository(String repo) {
return false;
}
/**
* @see org.springmodules.jcr.SessionHolderProvider#createSessionHolder(javax.jcr.Session)
*/
public SessionHolder createSessionHolder(Session session) {
return null;
}
};
providers = new ArrayList();
providers.add(customProvider);
sfCtrl.replay();
sessCtrl.replay();
repoCtrl.replay();
assertSame(GenericSessionHolderProvider.class, providerManager.getSessionProvider(repo).getClass());
}
}