From 3a69fc29b72dbd7eddeb4e70c126d1f4645f1be4 Mon Sep 17 00:00:00 2001 From: robokaso Date: Wed, 30 Jul 2008 09:36:49 +0000 Subject: [PATCH] RESOLVED - BATCH-518: tests for ExecutionContextDao impls --- .../dao/JdbcExecutionContextDaoTests.java | 16 +++++ .../dao/MapExecutionContextDaoTests.java | 11 ++- .../dao/AbstractExecutionContextDaoTests.java | 68 ++++++++++++------- 3 files changed, 71 insertions(+), 24 deletions(-) create mode 100644 spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcExecutionContextDaoTests.java diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcExecutionContextDaoTests.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcExecutionContextDaoTests.java new file mode 100644 index 000000000..f0391083c --- /dev/null +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcExecutionContextDaoTests.java @@ -0,0 +1,16 @@ +package org.springframework.batch.core.repository.dao; + +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = {"sql-dao-test.xml"}) +public class JdbcExecutionContextDaoTests extends AbstractExecutionContextDaoTests { + + @Override + protected ExecutionContextDao getExecutionContextDao() { + return (ExecutionContextDao) applicationContext.getBean("executionContextDao", JdbcExecutionContextDao.class); + } + +} diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MapExecutionContextDaoTests.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MapExecutionContextDaoTests.java index 3c557b306..74c4fc218 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MapExecutionContextDaoTests.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MapExecutionContextDaoTests.java @@ -1,5 +1,14 @@ package org.springframework.batch.core.repository.dao; -public class MapExecutionContextDaoTests { +/** + * Tests for {@link MapExecutionContextDao}. + */ +public class MapExecutionContextDaoTests extends AbstractExecutionContextDaoTests { + + @Override + protected ExecutionContextDao getExecutionContextDao() { + return new MapExecutionContextDao(); + } } + diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractExecutionContextDaoTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractExecutionContextDaoTests.java index 0a1d64090..9e1f60bfb 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractExecutionContextDaoTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractExecutionContextDaoTests.java @@ -4,66 +4,85 @@ import java.util.HashMap; import static org.junit.Assert.*; +import org.junit.Before; +import org.junit.Test; import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.JobInstance; +import org.springframework.batch.core.JobParameters; import org.springframework.batch.core.StepExecution; import org.springframework.batch.item.ExecutionContext; +import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; +import org.springframework.transaction.annotation.Transactional; -public abstract class AbstractExecutionContextDaoTests { +/** + * Tests for {@link ExecutionContextDao} implementations. + */ +public abstract class AbstractExecutionContextDaoTests extends AbstractTransactionalJUnit4SpringContextTests{ private ExecutionContextDao dao; - private JobExecutionDao jobDao; + private JobExecution jobExecution = new JobExecution(new JobInstance(1L, new JobParameters(), "jobName"), 1L); - private StepExecutionDao stepDao; + private StepExecution stepExecution = new StepExecution("stepName", jobExecution, 1L); - private JobExecution execution; + @Before + public void setUp() { + dao = getExecutionContextDao(); + } - private StepExecution stepExecution; - + /** + * @return Configured {@link ExecutionContextDao} implementation ready for use. + */ + protected abstract ExecutionContextDao getExecutionContextDao(); + + @Transactional @Test public void testSaveAndFindContext() { - jobDao.saveJobExecution(execution); + ExecutionContext ctx = new ExecutionContext(new HashMap() { { put("key", "value"); } }); - execution.setExecutionContext(ctx); - dao.persistExecutionContext(execution); + jobExecution.setExecutionContext(ctx); + dao.persistExecutionContext(jobExecution); - ExecutionContext retrieved = dao.getExecutionContext(execution); + ExecutionContext retrieved = dao.getExecutionContext(jobExecution); assertEquals(ctx, retrieved); } + @Transactional @Test public void testSaveAndFindEmptyContext() { - jobDao.saveJobExecution(execution); + ExecutionContext ctx = new ExecutionContext(); - execution.setExecutionContext(ctx); - dao.persistExecutionContext(execution); + jobExecution.setExecutionContext(ctx); + dao.persistExecutionContext(jobExecution); - ExecutionContext retrieved = dao.getExecutionContext(execution); + ExecutionContext retrieved = dao.getExecutionContext(jobExecution); assertEquals(ctx, retrieved); } + @Transactional @Test public void testUpdateContext() { - jobDao.saveJobExecution(execution); + ExecutionContext ctx = new ExecutionContext(new HashMap() { { put("key", "value"); } }); - execution.setExecutionContext(ctx); - dao.persistExecutionContext(execution); + jobExecution.setExecutionContext(ctx); + dao.persistExecutionContext(jobExecution); ctx.putLong("longKey", 7); - dao.persistExecutionContext(execution); + dao.persistExecutionContext(jobExecution); - ExecutionContext retrieved = dao.getExecutionContext(execution); + ExecutionContext retrieved = dao.getExecutionContext(jobExecution); assertEquals(ctx, retrieved); assertEquals(7, retrieved.getLong("longKey")); } + @Transactional @Test public void testSaveAndFindStepContext() { - stepDao.saveStepExecution(stepExecution); + ExecutionContext ctx = new ExecutionContext(new HashMap() { { put("key", "value"); @@ -76,8 +95,9 @@ public abstract class AbstractExecutionContextDaoTests { assertEquals(ctx, retrieved); } + @Transactional @Test public void testSaveAndFindEmptyStepContext() { - stepDao.saveStepExecution(stepExecution); + ExecutionContext ctx = new ExecutionContext(); stepExecution.setExecutionContext(ctx); dao.persistExecutionContext(stepExecution); @@ -86,8 +106,9 @@ public abstract class AbstractExecutionContextDaoTests { assertEquals(ctx, retrieved); } + @Transactional @Test public void testUpdateStepContext() { - stepDao.saveStepExecution(stepExecution); + ExecutionContext ctx = new ExecutionContext(new HashMap() { { put("key", "value"); @@ -104,8 +125,9 @@ public abstract class AbstractExecutionContextDaoTests { assertEquals(7, retrieved.getLong("longKey")); } + @Transactional @Test public void testStoreInteger(){ - stepDao.saveStepExecution(stepExecution); + ExecutionContext ec = new ExecutionContext(); ec.put("intValue", new Integer(343232)); stepExecution.setExecutionContext(ec);