@Test public void appenderDelegatesToItemAppender() { // given ItemAppender itemAppender = mock(ItemAppender.class); ItemAppenderFactory itemAppenderFactory = mockedItemAppenderFactory(); when(itemAppenderFactory.createInstance(anyBoolean(), any(AbstractLayout.class), any(BatchDelivery.class))) .thenReturn(itemAppender); ElasticsearchAppender appender = createTestElasticsearchAppender(itemAppenderFactory); LogEvent logEvent = mock(LogEvent.class); // when appender.append(logEvent); // then verify(itemAppender, times(1)).append(anyString(), eq(logEvent)); }
@Test public void appenderUsesProvidedIndexNameFormatter() { // given BatchDelivery<String> batchDelivery = mock(BatchDelivery.class); IndexNameFormatter indexNameFormatter = mock(IndexNameFormatter.class); when(indexNameFormatter.format(any(LogEvent.class))).thenReturn("formattedIndexName"); ElasticsearchAppender.Builder builder = ElasticsearchAppenderTest.createTestElasticsearchAppenderBuilder(); builder.withBatchDelivery(batchDelivery); builder.withMessageOnly(false); builder.withIndexNameFormatter(indexNameFormatter); LogEvent logEvent = createTestLogEvent(); ElasticsearchAppender appender = builder.build(); // when appender.append(logEvent); // then verify(batchDelivery, times(1)).add(eq("formattedIndexName"), any(ItemSource.class)); }
@Test public void appenderUsesProvidedLayoutWhenMessageOnlyIsSetToFalse() { // given AbstractStringLayout layout = PowerMockito.mock(AbstractStringLayout.class); ElasticsearchAppender.Builder builder = ElasticsearchAppenderTest.createTestElasticsearchAppenderBuilder(); builder.withMessageOnly(false); builder.withLayout(layout); LogEvent logEvent = mock(LogEvent.class); ElasticsearchAppender appender = builder.build(); // when appender.append(logEvent); // then ArgumentCaptor<LogEvent> captor = ArgumentCaptor.forClass(LogEvent.class); verify(layout, times(1)).toSerializable(captor.capture()); assertEquals(logEvent, captor.getValue()); }