Below is my DAO class:
------------------------
Class DataDao{
public void updateStatus(List<DataVO> EvntLst, String Ind, String MessageID) {
try{
BatchSqlUpdate batch = new BatchSqlUpdate(getDataSource(), UPDATE_TABLE_DATA);
batch.declareParameter(new SqlParameter(IND, Types.VARCHAR));
batch.declareParameter(new SqlParameter(ID, Types.BIGINT));
batch.declareParameter(new SqlParameter(RESID, Types.BIGINT));
batch.declareParameter(new SqlParameter(SMRYID,Types.BIGINT));
for (DataVO Data:EvntLst){
Object[] procInd = new Object[4];
procInd[0] = Ind;
procInd[1] = hbdData.getId();
procInd[2] = hbdData.getResourceId();
procInd[3]=hbdData.getSummaryID();
batch.update(procInd);
}
batch.setBatchSize(EvntLst.size());
batch.flush();
}catch(Exception exe){
throw new Exception(uniqueMessageID + "::Error While Evnt status");
}}
--------------------
`
@SpringBootTest(classes = DataDAOTest.class)
Class DataDaoTest{
@Mock
Connection connection;
@Mock
PreparedStatementCreator psc;
@Mock
PreparedStatement statement;
@InjectMocks
DataDAO hbdDataDAO;
@Mock
JdbcTemplate jdbcTemplate;
@Test
public void updateHBDProcStatus() throws SQLException {
List<DataVO> EvntLst = new ArrayList<>();
BatchSqlUpdate batch = mock(BatchSqlUpdate.class);
Mockito.when(jdbcTemplate.getDataSource()).thenReturn(dataSource);
Mockito.when(dataSource.getConnection()).thenReturn(connection);
Mockito.when(psc.createPreparedStatement(connection)).thenReturn(statement);
batch.setDataSource(dataSource);
batch.setSql(UPDATE_TABLE_DATA);
batch.setBatchSize(1);
String Ind = "Y";
String MessageID = "xyz";
DataVO Data;
Data = new DataVO(1234l, 543l, 567l, "yyyy-mm-dd hh:mm:ss", "123l", "abc", "yyyy-mm-dd hh:mm:ss", "N");
EvntLst.add(Data);
Object[] procInd = new Object[4];
procInd[0] = Ind;
procInd[1] = hbdData.getId();
procInd[2] = hbdData.getResourceId();
procInd[3] = hbdData.getSummaryID();
Mockito.when(batch.update(eq(procInd))).thenReturn(1);
dataDAO.updateStatus(EvntLst, Ind,MessageID);
}
}
Below is the stacktrace i'm getting:
java.lang.IllegalArgumentException: No Statement specified at org.springframework.util.Assert.notNull(Assert.java:201) ~[spring-core-5.3.20.jar:5.3.20] at org.springframework.jdbc.datasource.DataSourceUtils.applyTimeout(DataSourceUtils.java:334) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.core.JdbcTemplate.applyStatementSettings(JdbcTemplate.java:1470) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:650) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:691) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:1034) ~[spring-jdbc-5.3.20.jar:5.3.20] at org.springframework.jdbc.object.BatchSqlUpdate.flush(BatchSqlUpdate.java:185) ~[spring-jdbc-5.3.20.jar:5.3.20] at com.uprr.mdd.event.ehms_ds_interchange.process.dao.impl.DataDAO.updateStatus(DataDAO.java:98) [classes/:?] at com.uprr.mdd.event.ehms_ds_interchange.process.dao.DataDAOTest.updateStatus(DataDAOTest.java:129)