package de.stephanlindauer.criticalmaps.unittest; import org.junit.Test; import org.ligi.axt.AXT; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import de.stephanlindauer.criticalmaps.events.Events; import de.stephanlindauer.criticalmaps.handler.ServerResponseProcessor; import de.stephanlindauer.criticalmaps.model.ChatModel; import de.stephanlindauer.criticalmaps.model.OtherUsersLocationModel; import de.stephanlindauer.criticalmaps.provider.EventBusProvider; import de.stephanlindauer.criticalmaps.vo.chat.ReceivedChatMessage; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; public class ServerResponseProcessorTest { @Test public void testThatBasicChatMessagesAreParsed() throws IOException, URISyntaxException { final String json = AXT.at(new File(getClass().getClassLoader().getResource("simple_server_response.json").toURI())).readToString(); final ChatModel chatModel = new ChatModel(); final ServerResponseProcessor tested = new ServerResponseProcessor(mock(OtherUsersLocationModel.class), mock(EventBusProvider.class), chatModel); tested.process(json); assertThat(chatModel.getSavedAndOutgoingMessages().size()).isEqualTo(2); } @Test public void testThatBasicChatMessagesAreSorted() throws IOException, URISyntaxException { final String json = AXT.at(new File(getClass().getClassLoader().getResource("simple_server_response.json").toURI())).readToString(); final ChatModel chatModel = new ChatModel(); final ServerResponseProcessor tested = new ServerResponseProcessor(mock(OtherUsersLocationModel.class), mock(EventBusProvider.class), chatModel); tested.process(json); final ReceivedChatMessage message0 = (ReceivedChatMessage) chatModel.getSavedAndOutgoingMessages().get(0); final ReceivedChatMessage message1 = (ReceivedChatMessage) chatModel.getSavedAndOutgoingMessages().get(1); assertThat(message0.getTimestamp()).isBefore(message1.getTimestamp()); } @Test public void testThatEventIsFiredForValidJSON() throws IOException, URISyntaxException { final String json = AXT.at(new File(getClass().getClassLoader().getResource("simple_server_response.json").toURI())).readToString(); final EventBusProvider eventMock = mock(EventBusProvider.class); final ServerResponseProcessor tested = new ServerResponseProcessor(mock(OtherUsersLocationModel.class), eventMock, mock(ChatModel.class)); tested.process(json); verify(eventMock, times(1)).post(Events.NEW_SERVER_RESPONSE_EVENT); } @Test public void testThatNoEventIsFiredForInvalidJSON() throws IOException, URISyntaxException { final EventBusProvider eventMock = mock(EventBusProvider.class); final ServerResponseProcessor tested = new ServerResponseProcessor(mock(OtherUsersLocationModel.class), eventMock, mock(ChatModel.class)); tested.process("borken"); verify(eventMock,never()).post(Events.NEW_SERVER_RESPONSE_EVENT); } }