package nl.ipo.cds.dao;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertTrue;
import java.util.List;
import nl.ipo.cds.categories.IntegrationTests;
import nl.ipo.cds.domain.JobLog;
import nl.ipo.cds.domain.ValidateJob;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@Category(IntegrationTests.class)
public class ManagerDaoLogFilterTest extends BaseManagerDaoTest {
private static String[] logMessages = {
"Message 1",
"Message 2",
"Message 3",
"Message 4"
};
protected ValidateJob job;
protected ValidateJob emptyJob;
@Override @Before
public void buildDB () throws Exception {
super.buildDB ();
job = new ValidateJob();
managerDao.create(job);
emptyJob = new ValidateJob ();
managerDao.create (emptyJob);
for (String message: logMessages) {
JobLog log = new JobLog ();
log.setJob (job);
log.setMessage (message);
managerDao.create(log);
}
entityManager.flush();
}
@Test(expected = IllegalArgumentException.class)
public void testFindJobFaseLogForJobInvalidCriteria () throws Exception {
final JobLogCriteria criteria = new JobLogCriteria (job);
criteria.setJob (null);
managerDao.findJobLog (criteria);
}
public @Test void testFindJobLogForJob () throws Exception {
final List<JobLog> logItems = managerDao.findJobLog (job);
assertNotNull ("Must return a list", logItems);
assertEquals ("Job must have " + logMessages.length + " messages.", logMessages.length, logItems.size ());
for (int i = 0; i < logMessages.length; ++ i) {
assertEquals (logMessages[i], logItems.get (i).getMessage ());
}
}
public @Test void testFindJobLogForJobEmpty () throws Exception {
final List<JobLog> logItems = managerDao.findJobLog (emptyJob);
assertNotNull ("Must return a list", logItems);
assertTrue ("Must return an empty list", logItems.isEmpty ());
}
public @Test void testFindJobLogOrder () throws Exception {
final JobLogCriteria criteria = new JobLogCriteria (job);
criteria.setSortField (JobLogField.MESSAGE);
criteria.setSortOrder (SortOrder.DESCENDING);
final List<JobLog> logItems = managerDao.findJobLog (criteria);
assertNotNull (logItems);
assertEquals (logMessages.length, logItems.size ());
for (int i = 0; i < logMessages.length; ++ i) {
assertEquals (logMessages[logMessages.length - 1 - i], logItems.get(i).getMessage ());
}
}
public @Test void testFindJobFaseLogLimit () throws Exception {
final JobLogCriteria criteria = new JobLogCriteria (job);
criteria.setOffset (1);
criteria.setLimit (2);
final List<JobLog> logItems = managerDao.findJobLog (criteria);
assertNotNull (logItems);
assertEquals (2, logItems.size ());
assertEquals (logMessages[1], logItems.get (0).getMessage ());
assertEquals (logMessages[2], logItems.get (1).getMessage ());
}
}