package com.ewolff.orderhandling.batch;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.DirtiesContext.ClassMode;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.ewolff.orderhandling.dao.OrderDao;
import com.ewolff.orderhandling.domain.Order;
import com.ewolff.orderhandling.domain.OrderItem;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "/application-config.xml", "/META-INF/spring/batch/jobs/jobs.xml",
"/batch-config.xml" })
@DirtiesContext(classMode=ClassMode.AFTER_CLASS)
public class OrderBatchFulfillmentTest {
@Autowired
private OrderDao orderDao;
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job fulfillmentjob;
@Test
public void testBatch() throws Exception {
Order order = new Order(false, 21);
OrderItem orderItem = new OrderItem(0, "Power");
order.addOrderItem(orderItem);
for (int i = 0; i < 10; i++) {
orderItem.setCount(i);
orderDao.create(order);
Assert.assertFalse(order.isProcessed());
}
Assert.assertTrue(orderDao.findAllOrder().size() > 9);
JobExecution execution = jobLauncher.run(fulfillmentjob,
new JobParameters());
Assert.assertFalse(execution.isRunning());
for (Order o : orderDao.findAllOrder()) {
Assert.assertTrue(o.isProcessed());
Assert.assertTrue(o.isInvoiced());
}
}
}