use of nl.nn.adapterframework.util.MessageKeeper.MessageKeeperLevel in project iaf by ibissource.
the class DatabaseClassLoaderTest method mockDatabase.
private void mockDatabase(boolean throwException) throws Exception {
// Mock a FixedQuerySender
FixedQuerySender fq = mock(FixedQuerySender.class);
doReturn(new GenericDbmsSupport()).when(fq).getDbmsSupport();
Connection conn = mock(Connection.class);
doReturn(conn).when(fq).getConnection();
PreparedStatement stmt = mock(PreparedStatement.class);
doReturn(stmt).when(conn).prepareStatement(anyString());
ResultSet rs = mock(ResultSet.class);
doReturn(!throwException).when(rs).next();
doReturn("dummy").when(rs).getString(anyInt());
URL file = this.getClass().getResource(JAR_FILE);
doReturn(Misc.streamToBytes(file.openStream())).when(rs).getBytes(anyInt());
doReturn(rs).when(stmt).executeQuery();
doReturn(fq).when(ibisContext).createBeanAutowireByName(FixedQuerySender.class);
// IbisContext.log is a void method
@SuppressWarnings("rawtypes") Answer answer = new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
String message = invocation.getArgument(0);
MessageKeeperLevel level = invocation.getArgument(1);
Exception exception = invocation.getArgument(2);
new ApplicationMessageEvent(spy(ApplicationContext.class), message, level, exception);
return null;
}
};
// Mock the IbisContext's log method which uses getApplicationContext which in turn creates a
// new ApplicationContext if non exists. This functionality should be removed sometime in the future.
// During testing, the IbisContext never initialises and thus there is no ApplicationContext. The
// creation of the ApplicationContext during the test phase causes IllegalStateExceptions
// In turn this causes the actual thing we want to test to never be 'hit', aka the log message.
doAnswer(answer).when(ibisContext).log(anyString(), any(MessageKeeperLevel.class), any(Exception.class));
}
Aggregations