package com.github.kpavlov.jreactive8583; import com.github.kpavlov.jreactive8583.netty.pipeline.CompositeIsoMessageHandler; import com.solab.iso8583.IsoMessage; import com.solab.iso8583.MessageFactory; import io.netty.bootstrap.AbstractBootstrap; import io.netty.channel.ChannelHandlerContext; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class AbstractIso8583ConnectorTest<M extends IsoMessage> { private AbstractIso8583Connector<ConnectorConfiguration, AbstractBootstrap, M> subject; @Mock private ConnectorConfiguration config; @Mock private MessageFactory<M> messageFactory; @Mock private IsoMessageListener<M> listener; private CompositeIsoMessageHandler<M> compositeIsoMessageHandler; @Mock private ChannelHandlerContext ctx; @Mock private M message; @Before public void setUp() throws Exception { compositeIsoMessageHandler = new CompositeIsoMessageHandler<>(); subject = new AbstractIso8583Connector<ConnectorConfiguration, AbstractBootstrap, M>( config, messageFactory, compositeIsoMessageHandler ) { @Override protected AbstractBootstrap createBootstrap() { throw new UnsupportedOperationException("Method is not implemented: .createBootstrap"); } }; } @Test public void addMessageListener() throws Exception { //given @SuppressWarnings("unchecked") IsoMessageListener<M> listener = mock(IsoMessageListener.class); when(listener.applies(message)).thenReturn(true); //when subject.addMessageListener(listener); compositeIsoMessageHandler.channelRead(ctx, message); // then verify(listener).onMessage(ctx, message); } @Test public void removeMessageListener() throws Exception { //given subject.addMessageListener(listener); @SuppressWarnings("unchecked") IsoMessageListener<M> listener = mock(IsoMessageListener.class); //when subject.removeMessageListener(listener); compositeIsoMessageHandler.channelRead(ctx, message); // then verifyZeroInteractions(listener); } }