package uk.co.acuminous.julez.event.handler; import static org.junit.Assert.assertEquals; import java.util.List; import javax.jms.JMSException; import javax.jms.QueueConnectionFactory; import javax.jms.TextMessage; import org.junit.After; import org.junit.Before; import org.junit.Test; import uk.co.acuminous.julez.event.Event; import uk.co.acuminous.julez.marshalling.json.JsonEventTranslator; import uk.co.acuminous.julez.runner.ScenarioRunnerEvent; import uk.co.acuminous.julez.runner.ScenarioRunnerEventFactory; import uk.co.acuminous.julez.scenario.ScenarioEvent; import uk.co.acuminous.julez.scenario.ScenarioEventFactory; import uk.co.acuminous.julez.test.JmsTestUtils; import uk.co.acuminous.julez.util.JmsHelper; public class JmsEventHandlerTest { private QueueConnectionFactory connectionFactory; private JsonEventTranslator marshaller; @Before public void init() throws Exception { JmsTestUtils.createBroker(); connectionFactory = JmsTestUtils.getConnectionFactory(); marshaller = new JsonEventTranslator(); } @After public void nuke() throws Exception { JmsTestUtils.nukeBroker(); } @Test public void scenarioEventsAreWrittenToTheQueue() throws JMSException, InterruptedException { JmsEventHandler jmsSender = new JmsEventHandler(connectionFactory, marshaller); ScenarioEvent expected = new ScenarioEventFactory().fail(); jmsSender.onEvent(expected); assertEquals(expected, dequeue()); } @Test public void scenarioRunnerEventsAreWrittenToTheQueue() throws Exception { JmsEventHandler jmsSender = new JmsEventHandler(connectionFactory, marshaller); ScenarioRunnerEvent expected = new ScenarioRunnerEventFactory().begin(); jmsSender.onEvent(expected); assertEquals(expected, dequeue()); } private Event dequeue() throws JMSException { List<TextMessage> messages = JmsHelper.browseMessages(connectionFactory, JmsEventHandler.DEFAULT_QUEUE_NAME); return marshaller.unmarshall(messages.get(0).getText()); } }