@Test public void testChangeLevel() { LoggingHandler loggingHandler = new LoggingHandler(Level.INFO); loggingHandler.setBeanFactory(mock(BeanFactory.class)); loggingHandler.afterPropertiesSet(); DirectFieldAccessor accessor = new DirectFieldAccessor(loggingHandler); Log log = (Log) accessor.getPropertyValue("messageLogger"); log = spy(log); accessor.setPropertyValue("messageLogger", log); when(log.isInfoEnabled()).thenReturn(true); loggingHandler.handleMessage(new GenericMessage<>("foo")); verify(log, times(1)).info(Mockito.anyString()); verify(log, never()).warn(Mockito.anyString()); loggingHandler.setLevel(Level.WARN); loggingHandler.handleMessage(new GenericMessage<>("foo")); verify(log, times(1)).info(Mockito.anyString()); verify(log, times(1)).warn(Mockito.anyString()); }
@Test public void testDontEvaluateIfNotEnabled() { LoggingHandler loggingHandler = new LoggingHandler("INFO"); loggingHandler.setBeanFactory(mock(BeanFactory.class)); loggingHandler.afterPropertiesSet(); DirectFieldAccessor accessor = new DirectFieldAccessor(loggingHandler); Log log = (Log) accessor.getPropertyValue("messageLogger"); log = spy(log); accessor.setPropertyValue("messageLogger", log); Expression expression = (Expression) accessor.getPropertyValue("expression"); expression = spy(expression); accessor.setPropertyValue("expression", expression); when(log.isInfoEnabled()).thenReturn(false); loggingHandler.handleMessage(new GenericMessage<>("foo")); verify(expression, never()) .getValue(Mockito.any(EvaluationContext.class), Mockito.any(Message.class)); when(log.isInfoEnabled()).thenReturn(true); loggingHandler.handleMessage(new GenericMessage<>("foo")); verify(expression, times(1)) .getValue(Mockito.any(EvaluationContext.class), Mockito.any(Message.class)); }