@Test public void sendsEvents() throws InterruptedException { // GIVEN EventBus eventBus = new SimpleEventBus(); LocalMessageDispatcher dispatcher = new LocalMessageDispatcher(eventBus, ui); ArrayList<MessageEvent> events = new ArrayList<MessageEvent>(); eventBus.addHandler(MessageEvent.class, new CollectingMessageEventHandler(events)); // WHEN Message message = new Message(); message.setType(MessageType.ERROR); message.setSubject("subject"); message.setMessage("message"); dispatcher.messageSent(message); Message clearedMessage = new Message(); clearedMessage.setType(MessageType.ERROR); clearedMessage.setSubject("subject"); clearedMessage.setMessage("cleared message"); dispatcher.messageCleared(clearedMessage); dispatcher.messageRemoved("1"); // THEN assertEquals(3, events.size()); assertEquals("subject", events.get(0).getMessage().getSubject()); assertEquals("cleared message", events.get(1).getMessage().getMessage()); assertEquals("1", events.get(2).getId()); assertTrue(events.get(2).isRemoved()); }
@Test public void sendsEventsEvenIfHandlersFail() throws InterruptedException { // GIVEN EventBus eventBus = new SimpleEventBus(); LocalMessageDispatcher dispatcher = new LocalMessageDispatcher(eventBus, ui); ArrayList<MessageEvent> events = new ArrayList<MessageEvent>(); eventBus.addHandler(MessageEvent.class, new ThrowingMessageEventHandler(events)); eventBus.addHandler(MessageEvent.class, new ThrowingMessageEventHandler(events)); // WHEN Message message = new Message(); message.setType(MessageType.ERROR); message.setSubject("subject"); message.setMessage("message"); dispatcher.messageSent(message); Message clearedMessage = new Message(); clearedMessage.setType(MessageType.ERROR); clearedMessage.setSubject("subject"); clearedMessage.setMessage("cleared message"); dispatcher.messageCleared(clearedMessage); // THEN assertEquals(4, events.size()); assertEquals("subject", events.get(0).getMessage().getSubject()); assertEquals("subject", events.get(1).getMessage().getSubject()); assertEquals("cleared message", events.get(2).getMessage().getMessage()); assertEquals("cleared message", events.get(3).getMessage().getMessage()); }