package org.sef4j.log.slf4j.event2slf4j; import java.util.Arrays; import org.junit.Test; import org.mockito.Mockito; import org.sef4j.core.helpers.adapters.TypeHierarchyToObjectMap; import org.slf4j.Logger; public class Slf4jLogCallerEventSenderTest { private static class E { protected String msg; public E(String msg) { this.msg = msg; } public String toString() { return "E[" + msg + "]"; } } private static class F extends E { public F(String msg) { super(msg); } public String toString() { return "F[" + msg + "]"; } } protected Logger slf4jLogger = Mockito.mock(Logger.class); protected EventToSlf4jLogCaller<E> eventToSlf4jLogCaller1 = new DefaultToStringLogInfoCaller<E>("msg-prefix1- ", " -msg-suffix1"); protected EventToSlf4jLogCaller<E> eventToSlf4jLogCaller2 = new DefaultToStringLogInfoCaller<E>("msg-prefix2- ", " -msg-suffix2"); protected EventToSlf4jLogCaller<E> defaultEventToSlf4jLogCaller = new DefaultToStringLogInfoCaller<E>("default-msg-prefix- ", " -default-msg-suffix"); protected TypeHierarchyToObjectMap<EventToSlf4jLogCaller<E>> eventToSlf4jLogCallerPerClass = new TypeHierarchyToObjectMap<EventToSlf4jLogCaller<E>>(); private Slf4jLogCallerEventSender<E> sut = new Slf4jLogCallerEventSender<E>( slf4jLogger, null, null); @Test public void testSendEvent() { // Prepare Mockito.doNothing().when(slf4jLogger).info(Mockito.anyString()); E e1 = new E("e1"); // Perform sut.sendEvent(e1); // Post-check Mockito.verify(slf4jLogger, Mockito.times(0)).info(Mockito.anyString()); // Prepare sut.setDefautEventToSlf4jLogCaller(defaultEventToSlf4jLogCaller); // Perform sut.sendEvent(e1); // Post-check Mockito.verify(slf4jLogger).info("default-msg-prefix- E[e1] -default-msg-suffix"); // Prepare eventToSlf4jLogCallerPerClass.putOverride(E.class, eventToSlf4jLogCaller1); sut.setEventToSlf4jLogCallerPerClass(eventToSlf4jLogCallerPerClass); // Perform sut.sendEvent(e1); // Post-check Mockito.verify(slf4jLogger).info("msg-prefix1- E[e1] -msg-suffix1"); // Prepare F f2 = new F("f2"); // Perform sut.sendEvent(f2); // Post-check Mockito.verify(slf4jLogger).info("msg-prefix1- F[f2] -msg-suffix1"); // Prepare eventToSlf4jLogCallerPerClass.putOverride(F.class, eventToSlf4jLogCaller2); // Perform sut.sendEvent(f2); // Post-check Mockito.verify(slf4jLogger).info("msg-prefix2- F[f2] -msg-suffix2"); } @Test public void testSendEvents() { // Prepare Mockito.doNothing().when(slf4jLogger).info(Mockito.anyString()); E e1 = new E("e1"); E e2 = new E("e2"); sut.setDefautEventToSlf4jLogCaller(defaultEventToSlf4jLogCaller); // Perform sut.sendEvents(Arrays.asList(e1, e2)); // Post-check Mockito.verify(slf4jLogger).info("default-msg-prefix- E[e1] -default-msg-suffix"); Mockito.verify(slf4jLogger).info("default-msg-prefix- E[e2] -default-msg-suffix"); } }