/* * Copyright (C) 2015 Jan Pokorsky * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package cz.cas.lib.proarc.common.dao.empiredb; import cz.cas.lib.proarc.common.workflow.model.JobFilter; import cz.cas.lib.proarc.common.workflow.model.JobView; import cz.cas.lib.proarc.common.workflow.model.Job; import cz.cas.lib.proarc.common.workflow.model.Job.State; import java.math.BigDecimal; import java.sql.Timestamp; import java.util.Arrays; import java.util.List; import org.dbunit.dataset.CompositeDataSet; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ReplacementDataSet; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; /** * * @author Jan Pokorsky */ public class EmpireWorkflowJobDaoTest { private DbUnitSupport support; private ProarcDatabase schema; private EmpireDaoFactory daos; private SqlTransaction tx; private EmpireWorkflowJobDao dao; private Timestamp dbTimestamp; public EmpireWorkflowJobDaoTest() { } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { support = new DbUnitSupport(); schema = support.getEmireCfg().getSchema(); daos = new EmpireDaoFactory(support.getEmireCfg()); daos.init(); tx = daos.createTransaction(); dao = daos.createWorkflowJobDao(); dao.setTransaction(tx); } @After public void tearDown() { if (tx != null) { tx.close(); } } private IDataSet database(IDataSet... ds) throws Exception { ReplacementDataSet rds = new ReplacementDataSet(new CompositeDataSet(ds)); rds.addReplacementObject("{$user.home}", "relative/path/"); dbTimestamp = new Timestamp(System.currentTimeMillis()); rds.addReplacementObject("{$now}", dbTimestamp); return rds; } @Test public void testCreate() throws Exception { IDataSet db = database( support.loadFlatXmlDataStream(getClass(), "user.xml") ); support.cleanInsert(support.getConnection(tx), db); Job job = dao.create(); job.addCreated(dbTimestamp).addFinanced("financed").addLabel("label") .addNote("note").addOwnerId(BigDecimal.ONE).addPriority(1) .addProfileName("profile").setState(State.OPEN).addTimestamp(dbTimestamp); dao.update(job); tx.commit(); Job result = dao.find(job.getId()); assertNotNull(result); assertEquals(job.getCreated(), result.getCreated()); assertEquals(job.getFinanced(), result.getFinanced()); assertEquals(job.getId(), result.getId()); assertEquals(job.getLabel(), result.getLabel()); assertEquals(job.getNote(), result.getNote()); assertEquals(job.getOwnerId(), result.getOwnerId()); assertEquals(job.getPriority(), result.getPriority()); assertEquals(job.getProfileName(), result.getProfileName()); assertEquals(job.getState(), result.getState()); assertEquals(job.getTimestamp(), result.getTimestamp()); } @Test public void testUpdate() throws Exception { IDataSet db = database( support.loadFlatXmlDataStream(getClass(), "user.xml"), support.loadFlatXmlDataStream(getClass(), "wf_job.xml") ); support.cleanInsert(support.getConnection(tx), db); tx.commit(); Job job = dao.find(BigDecimal.ONE); job.setLabel("new label"); job.setTimestamp(new Timestamp(job.getTimestamp().getTime())); dao.update(job); tx.commit(); Job result = dao.find(BigDecimal.ONE); assertEquals("new label", result.getLabel()); } @Test public void testView() throws Exception { IDataSet db = database( support.loadFlatXmlDataStream(getClass(), "user.xml"), support.loadFlatXmlDataStream(getClass(), "wf_job.xml") ); support.cleanInsert(support.getConnection(tx), db); tx.commit(); JobFilter filter = new JobFilter(); filter.setId(BigDecimal.ONE); filter.setLabel("Monograph1"); List<JobView> jobs = dao.view(filter); assertEquals(1, jobs.size()); JobView job0 = jobs.get(0); assertEquals(BigDecimal.ONE, job0.getId()); assertEquals("job.ndk", job0.getProfileName()); assertEquals("test", job0.getUserName()); } @Test public void testViewDateFilter() throws Exception { IDataSet db = database( support.loadFlatXmlDataStream(getClass(), "user.xml"), support.loadFlatXmlDataStream(getClass(), "wf_job.xml") ); support.cleanInsert(support.getConnection(tx), db); tx.commit(); JobFilter filter = new JobFilter(); filter.setCreated(Arrays.asList( ">", "2015-10-24T23:00:00", "<", "2015-10-26T23:00:00" )); List<JobView> jobs = dao.view(filter); assertEquals(1, jobs.size()); JobView job0 = jobs.get(0); assertEquals(new BigDecimal(2), job0.getId()); assertEquals("job.stt", job0.getProfileName()); } }