package it.slyce.messaging;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import it.slyce.messaging.message.MediaMessage;
import it.slyce.messaging.message.MessageSource;
import it.slyce.messaging.message.TextMessage;
import it.slyce.messaging.message.messageItem.MessageItem;
import it.slyce.messaging.utils.MessageUtils;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* Created by audrey on 7/14/16.
*/
public class MessageUtilsTest {
List<MessageItem> messageItems;
@Before
public void before() {
messageItems = new ArrayList<>();
// incoming text
TextMessage firstIncoming = new TextMessage();
firstIncoming.setSource(MessageSource.EXTERNAL_USER);
firstIncoming.setText("hi");
messageItems.add(firstIncoming.toMessageItem(null));
// incoming text
TextMessage secondIncoming = new TextMessage();
secondIncoming.setSource(MessageSource.EXTERNAL_USER);
secondIncoming.setText("second message");
messageItems.add(secondIncoming.toMessageItem(null));
// incoming image
MediaMessage incomingImage = new MediaMessage();
incomingImage.setSource(MessageSource.EXTERNAL_USER);
incomingImage.setUrl("http://snipsnap.it/fakeimage.png");
messageItems.add(incomingImage.toMessageItem(null));
// outgoing text
TextMessage firstOutgoing = new TextMessage();
firstOutgoing.setSource(MessageSource.LOCAL_USER);
firstOutgoing.setText("hi");
messageItems.add(firstOutgoing.toMessageItem(null));
// outgoing image
TextMessage secondOutgoing = new TextMessage();
secondOutgoing.setSource(MessageSource.LOCAL_USER);
secondOutgoing.setText("hi");
messageItems.add(secondOutgoing.toMessageItem(null));
// incoming text
TextMessage finalIncoming = new TextMessage();
finalIncoming.setSource(MessageSource.EXTERNAL_USER);
finalIncoming.setText("final message");
messageItems.add(finalIncoming.toMessageItem(null));
}
@Test
public void firstConsecutiveMessageIsMarkedAsFirst() throws Exception {
MessageUtils.markMessageItemAtIndexIfFirstOrLastFromSource(0, messageItems);
MessageItem item = messageItems.get(0);
assertTrue(item.isFirstConsecutiveMessageFromSource());
assertFalse(item.isLastConsecutiveMessageFromSource());
}
@Test
public void middleMessageIsNeitherFirstNorLast() throws Exception {
MessageUtils.markMessageItemAtIndexIfFirstOrLastFromSource(1, messageItems);
MessageItem item = messageItems.get(1);
assertFalse(item.isFirstConsecutiveMessageFromSource());
assertFalse(item.isLastConsecutiveMessageFromSource());
}
@Test
public void lastIncomingMessageIsMarkedLast() throws Exception {
MessageUtils.markMessageItemAtIndexIfFirstOrLastFromSource(2, messageItems);
MessageItem item = messageItems.get(2);
assertFalse(item.isFirstConsecutiveMessageFromSource());
assertTrue(item.isLastConsecutiveMessageFromSource());
}
@Test
public void firstOutgoingMessageIsMarkedFirst() throws Exception {
MessageUtils.markMessageItemAtIndexIfFirstOrLastFromSource(3, messageItems);
MessageItem item = messageItems.get(3);
assertTrue(item.isFirstConsecutiveMessageFromSource());
assertFalse(item.isLastConsecutiveMessageFromSource());
}
@Test
public void lastOutgoingMessageIsMarkedLast() throws Exception {
MessageUtils.markMessageItemAtIndexIfFirstOrLastFromSource(4, messageItems);
MessageItem item = messageItems.get(4);
assertFalse(item.isFirstConsecutiveMessageFromSource());
assertTrue(item.isLastConsecutiveMessageFromSource());
}
@Test
public void lastMessageIsMarkedLast() throws Exception {
MessageUtils.markMessageItemAtIndexIfFirstOrLastFromSource(5, messageItems);
MessageItem item = messageItems.get(5);
assertTrue(item.isFirstConsecutiveMessageFromSource());
assertTrue(item.isLastConsecutiveMessageFromSource());
}
}