package org.lightfish.business.escalation.boundary.notification.transmitters.comet; import java.io.Writer; import org.junit.Before; import org.junit.Test; import org.lightfish.business.escalation.entity.Escalation; import org.lightfish.business.heartbeat.control.Serializer; import org.lightfish.presentation.publication.BrowserWindow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** * * @author adam bien, adam-bien.com */ public class CometNotifierTest { private CometTransmitterDelegate cut; @Before public void init() { this.cut = new CometTransmitterDelegate(); this.cut.serializer = mock(Serializer.class); } @Test public void singleChannelNofified() { final String escalationChannel = "duke"; BrowserWindow window = mock(BrowserWindow.class); Writer writer = mock(Writer.class); when(window.getWriter()).thenReturn(writer); Escalation escalation = new Escalation(); escalation.setChannel(escalationChannel); when(window.getChannel()).thenReturn(escalationChannel); this.cut.onEscalationBrowserRequest(window); this.cut.addEscalation(escalation); verify(window, never()).send(); this.cut.notifyEscalationListeners(); verify(window).send(); } /** * Without specifying a Channel for a window, or specifying "" as the * channel, the "broadcast" channel should be notified. */ @Test public void broadcastChannelNofified() { final String escalationChannel = "duke"; BrowserWindow window = mock(BrowserWindow.class); when(window.getChannel()).thenReturn(""); Escalation escalation = new Escalation(); escalation.setChannel(escalationChannel); this.cut.onEscalationBrowserRequest(window); this.cut.addEscalation(escalation); verify(window, never()).send(); this.cut.notifyEscalationListeners(); verify(window).send(); } @Test public void nothingToSay() { BrowserWindow window = mock(BrowserWindow.class); when(window.getChannel()).thenReturn("does-not-matter"); this.cut.onEscalationBrowserRequest(window); verify(window, never()).send(); this.cut.notifyEscalationListeners(); verify(window).nothingToSay(); verify(window, never()).send(); } }