/*
* Copyright 2002-2005 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springmodules.orm.ojb;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import junit.framework.TestCase;
import org.apache.ojb.broker.Identity;
import org.apache.ojb.broker.IdentityFactory;
import org.apache.ojb.broker.PBKey;
import org.apache.ojb.broker.PersistenceBroker;
import org.apache.ojb.broker.PersistenceBrokerFactory;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryByCriteria;
import org.easymock.MockControl;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springmodules.beans.TestBean;
/**
* @author Juergen Hoeller
* @since 08.07.2004
*/
public class PersistenceBrokerTemplateTests extends TestCase {
protected void setUp() throws Exception {
Resource res = new ClassPathResource("OJB.properties");
System.setProperty("OJB.properties", res.getFile().getAbsolutePath());
}
public void testPbKey() {
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate();
assertEquals(PersistenceBrokerFactory.getDefaultKey(), template.getPbKey());
template = new PersistenceBrokerTemplate();
template.setJcdAlias("alias1");
assertEquals("alias1", template.getJcdAlias());
assertEquals("alias1", template.getPbKey().getAlias());
template = new PersistenceBrokerTemplate();
template.setPbKey(new PBKey("alias2", "user2", "password2"));
assertEquals("alias2", template.getJcdAlias());
assertEquals("alias2", template.getPbKey().getAlias());
assertEquals("user2", template.getPbKey().getUser());
assertEquals("password2", template.getPbKey().getPassword());
}
public void testGetObjectById() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
MockControl idfControl = MockControl.createControl(IdentityFactory.class);
final IdentityFactory idf = (IdentityFactory) idfControl.getMock();
Identity identity = new Identity(String.class, Object.class, new Object[] {"id"});
pb.serviceIdentity();
pbControl.setReturnValue(idf, 1);
idf.buildIdentity(String.class, "id");
idfControl.setReturnValue(identity, 1);
pb.getObjectByIdentity(identity);
pbControl.setReturnValue("", 1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
idfControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
assertEquals("", template.getObjectById(String.class, "id"));
pbControl.verify();
idfControl.verify();
}
public void testGetObjectByQuery() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
Query query = new QueryByCriteria(TestBean.class);
pb.getObjectByQuery(query);
pbControl.setReturnValue("", 1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
assertEquals("", template.getObjectByQuery(query));
pbControl.verify();
}
public void testGetCollectionByQuery() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
Query query = new QueryByCriteria(TestBean.class);
Collection result = new HashSet();
pb.getCollectionByQuery(query);
pbControl.setReturnValue(result, 1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
assertEquals(result, template.getCollectionByQuery(query));
pbControl.verify();
}
public void testGetIteratorByQuery() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
Query query = new QueryByCriteria(TestBean.class);
Iterator result = new HashSet().iterator();
pb.getIteratorByQuery(query);
pbControl.setReturnValue(result, 1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
assertEquals(result, template.getIteratorByQuery(query));
pbControl.verify();
}
public void testGetReportQueryIteratorByQuery() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
Query query = new QueryByCriteria(TestBean.class);
Iterator result = new HashSet().iterator();
pb.getReportQueryIteratorByQuery(query);
pbControl.setReturnValue(result, 1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
assertEquals(result, template.getReportQueryIteratorByQuery((query)));
pbControl.verify();
}
public void testGetCount() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
Query query = new QueryByCriteria(TestBean.class);
pb.getCount(query);
pbControl.setReturnValue(0, 1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
assertEquals(0, template.getCount(query));
pbControl.verify();
}
public void testRemoveFromCache() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
Object entity = new Object();
pb.removeFromCache(entity);
pbControl.setVoidCallable(1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
template.removeFromCache(entity);
pbControl.verify();
}
public void testClearCache() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
pb.clearCache();
pbControl.setVoidCallable(1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
template.clearCache();
pbControl.verify();
}
public void testStore() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
Object entity = new Object();
pb.store(entity);
pbControl.setVoidCallable(1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
template.store(entity);
pbControl.verify();
}
public void testDelete() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
Object entity = new Object();
pb.delete(entity);
pbControl.setVoidCallable(1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
template.delete(entity);
pbControl.verify();
}
public void testDeleteByQuery() {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
Query query = new QueryByCriteria(TestBean.class);
pb.deleteByQuery(query);
pbControl.setVoidCallable(1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
PersistenceBrokerTemplate template = new PersistenceBrokerTemplate() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
template.deleteByQuery(query);
pbControl.verify();
}
}