package com.vst.service;
import java.util.List;
import java.util.ArrayList;
import com.vst.service.BaseManagerTestCase;
import com.vst.dao.MeasureDao;
import com.vst.model.Measure;
import com.vst.service.impl.MeasureManagerImpl;
import org.jmock.Mock;
import org.springframework.orm.ObjectRetrievalFailureException;
public class MeasureManagerTest extends BaseManagerTestCase {
private final String measureId = "1";
private MeasureManagerImpl measureManager = new MeasureManagerImpl();
private Mock measureDao = null;
protected void setUp() throws Exception {
super.setUp();
measureDao = new Mock(MeasureDao.class);
measureManager.setMeasureDao((MeasureDao) measureDao.proxy());
}
protected void tearDown() throws Exception {
super.tearDown();
measureManager = null;
}
public void testGetMeasures() throws Exception {
List results = new ArrayList();
Measure measure = new Measure();
results.add(measure);
// set expected behavior on dao
measureDao.expects(once()).method("getMeasures")
.will(returnValue(results));
List measures = measureManager.getMeasures(null);
assertTrue(measures.size() == 1);
measureDao.verify();
}
public void testGetMeasure() throws Exception {
// set expected behavior on dao
measureDao.expects(once()).method("getMeasure")
.will(returnValue(new Measure()));
Measure measure = measureManager.getMeasure(measureId);
assertTrue(measure != null);
measureDao.verify();
}
public void testSaveMeasure() throws Exception {
Measure measure = new Measure();
// set expected behavior on dao
measureDao.expects(once()).method("saveMeasure")
.with(same(measure)).isVoid();
measureManager.saveMeasure(measure);
measureDao.verify();
}
public void testAddAndRemoveMeasure() throws Exception {
Measure measure = new Measure();
// set required fields
// set expected behavior on dao
measureDao.expects(once()).method("saveMeasure")
.with(same(measure)).isVoid();
measureManager.saveMeasure(measure);
measureDao.verify();
// reset expectations
measureDao.reset();
measureDao.expects(once()).method("removeMeasure").with(eq(new Long(measureId)));
measureManager.removeMeasure(measureId);
measureDao.verify();
// reset expectations
measureDao.reset();
// remove
Exception ex = new ObjectRetrievalFailureException(Measure.class, measure.getMeasureId());
measureDao.expects(once()).method("removeMeasure").isVoid();
measureDao.expects(once()).method("getMeasure").will(throwException(ex));
measureManager.removeMeasure(measureId);
try {
measureManager.getMeasure(measureId);
fail("Measure with identifier '" + measureId + "' found in database");
} catch (ObjectRetrievalFailureException e) {
assertNotNull(e.getMessage());
}
measureDao.verify();
}
}