package nl.ipo.cds.dao; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.EntityNotFoundException; import javax.persistence.PersistenceContext; import nl.idgis.commons.jobexecutor.Job; import nl.idgis.commons.jobexecutor.JobDao; import nl.ipo.cds.categories.IntegrationTests; import nl.ipo.cds.domain.Dataset; import nl.ipo.cds.domain.EtlJob; import nl.ipo.cds.domain.ImportJob; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.springframework.orm.jpa.JpaObjectRetrievalFailureException; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; @RunWith(SpringJUnit4ClassRunner.class) @TransactionConfiguration(defaultRollback = true) @Category(IntegrationTests.class) public class JobDaoTest extends BaseManagerDaoTest { @PersistenceContext(unitName = "cds") private EntityManager entityManager; @Inject private JobDao jobDao; /** * build up a database with base tables to be used in the testcases * @throws Exception */ @Before public void buildDB() throws Exception { super.buildDB (); } private <T extends EtlJob> T createJob (final T job) { final Dataset dataset = managerDao.getAllDatasets().get(0); job.setBronhouder (dataset.getBronhouder ()); job.setDatasetType (dataset.getDatasetType ()); job.setUuid (dataset.getUuid ()); return job; } @Test public void testCreate () { final ImportJob importJob = createJob (new ImportJob ()); jobDao.create (importJob); assertNotNull (importJob.getId ()); assertNotNull (entityManager.getReference (ImportJob.class, importJob.getId ())); } @Test public void testGetJob () { final ImportJob importJob = createJob (new ImportJob ()); jobDao.create (importJob); final Job fetchedJob = jobDao.getJob (importJob.getId ()); assertNotNull (fetchedJob); assertEquals (importJob.getId (), fetchedJob.getId ()); } @Test public void testUpdate () { final ImportJob importJob = createJob (new ImportJob ()); importJob.setVerversen (true); jobDao.create (importJob); final Job fetchedJob = jobDao.getJob (importJob.getId ()); assertTrue (((ImportJob)fetchedJob).getVerversen ()); ((ImportJob)fetchedJob).setVerversen (false); jobDao.update (fetchedJob); assertFalse (((ImportJob)jobDao.getJob (importJob.getId ())).getVerversen ()); } @Test public void testDelete () { final ImportJob importJob = createJob (new ImportJob ()); jobDao.create (importJob); final Job fetchedJob = jobDao.getJob (importJob.getId ()); assertNotNull (fetchedJob); jobDao.delete (fetchedJob); assertNull (jobDao.getJob (importJob.getId ())); try { entityManager.getReference (EtlJob.class, importJob.getId ()); } catch (JpaObjectRetrievalFailureException e) { return; } catch (EntityNotFoundException e) { return; } fail (); } }