@Test
public void sendsEvents() throws InterruptedException {
EventBus eventBus = new SimpleEventBus();
LocalMessageDispatcher dispatcher = new LocalMessageDispatcher(eventBus, ui);
ArrayList<MessageEvent> events = new ArrayList<MessageEvent>();
eventBus.addHandler(MessageEvent.class, new CollectingMessageEventHandler(events));
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");
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());
}