package io.coreflodev.openchat.api;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import java.util.GregorianCalendar;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class ChatServiceTest {
@Rule
public ApiTestRule apiTestRule = new ApiTestRule();
private ChatService chatService;
@Before
public void setup() {
chatService = apiTestRule.create(ChatService.class);
}
@Test
public void testGetMessages() throws Throwable {
apiTestRule.enqueue("[" +
" {" +
" \"pseudo\": \"test\"," +
" \"message\": \"message from server\"," +
" \"date\": \"2017-01-06T14:57:33.070Z\"" +
" }" +
"]");
List<ChatMessage> chatMessages = chatService.getMessages().blockingFirst();
assertEquals(chatMessages.size(), 1);
assertEquals(chatMessages.get(0).pseudo(), "test");
assertEquals(chatMessages.get(0).message(), "message from server");
GregorianCalendar expectedDate = new GregorianCalendar(2017, 0, 6, 14, 57, 33);
assertEquals(chatMessages.get(0).date().toString(), expectedDate.getTime().toString());
apiTestRule.stopServerForOfflineTest();
chatMessages = chatService.getMessages().blockingFirst();
assertEquals(chatMessages.size(), 1);
assertEquals(chatMessages.get(0).pseudo(), "test");
assertEquals(chatMessages.get(0).message(), "message from server");
assertEquals(chatMessages.get(0).date().toString(), expectedDate.getTime().toString());
}
@Test
public void testAddMessage() {
apiTestRule.enqueue("{" +
" \"pseudo\": \"test\"," +
" \"message\": \"message from server\"," +
" \"date\": \"2017-01-06T14:57:33.070Z\"" +
"}");
GregorianCalendar expectedDate = new GregorianCalendar(2017, 0, 6, 14, 57, 33);
ChatMessage chatMessage = ChatMessage.create("test", "message from server", expectedDate.getTime());
ChatMessage chatMessageTest = chatService.addMessage(chatMessage).blockingFirst();
assertEquals(chatMessageTest.toString(), chatMessage.toString());
}
}