package com.muleinaction;
import junit.framework.Assert;
import org.junit.Test;
import org.mule.api.MuleMessage;
import org.mule.tck.junit4.FunctionalTestCase;
import org.springframework.jdbc.BadSqlGrammarException;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.util.Date;
import java.util.Map;
import static junit.framework.Assert.*;
public class JDBCInboundFunctionalTestCase extends FunctionalTestCase {
@Override
protected String getConfigResources() {
return "src/main/app/jdbc-inbound-config.xml";
}
@Override
protected void doSetUp() throws Exception {
super.doSetUp();
createDatabase();
}
@Test
public void testCanPollForStuckOrders() throws Exception {
MuleMessage results = muleContext.getClient().request("jms://topic:orders.status.stuck",15000);
assertNotNull(results);
assertNotNull(results.getPayload());
assertEquals(1, ((Map)results.getPayload()).keySet().size());
}
private void createDatabase() {
DataSource dataSource = (DataSource) muleContext.getRegistry().lookupObject("dataSource");
JdbcTemplate template = new JdbcTemplate(dataSource);
try {
template.update("DROP TABLE orders");
} catch (BadSqlGrammarException ex) {
logger.error(ex);
}
template.update("CREATE TABLE orders " +
"(id BIGINT NOT NULL, details VARCHAR(4096), timestamp TIMESTAMP)");
Date now = new Date();
template.update("INSERT INTO orders VALUES (0,?,?)",
new Object[]{"foo", new Date(now.getTime() - (86400000 * 2))});
}
}