StructuredLoggerImpl implements StructuredLogger { public void error(final Supplier<SchemaAndValue> msgSupplier) { if (!inner.isErrorEnabled()) { return; } error(msgSupplier.get()); } StructuredLoggerImpl(final Logger inner); String getName(); void error(final Supplier<SchemaAndValue> msgSupplier); void error(final SchemaAndValue msg); void info(final Supplier<SchemaAndValue> msgSupplier); void info(final SchemaAndValue msg); void debug(final Supplier<SchemaAndValue> msgSupplier); void debug(final SchemaAndValue msg);  }
@Test public void shouldLogErrorMessage() { logger.error(msg); verify(innerLogger, times(1)).error(eq(LOG_MSG), captor.capture()); assertThat(captor.getValue().getMessage(), is(msg)); }
@Test public void shouldLogErrorMessageGivenSupplier() { when(innerLogger.isErrorEnabled()).thenReturn(true); logger.error(msgSupplier); verify(msgSupplier, times(1)).get(); verify(innerLogger, times(1)).error(eq(LOG_MSG), captor.capture()); assertThat(captor.getValue().getMessage(), is(msg)); }
@Test public void shouldNotGetMessageIfLoggerDisabledForError() { when(innerLogger.isErrorEnabled()).thenReturn(false); logger.error(msgSupplier); verify(innerLogger).isErrorEnabled(); verifyNoMoreInteractions(innerLogger, msgSupplier); }