package org.openlmis.email.repository;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.openlmis.db.categories.UnitTests;
import org.openlmis.email.domain.EmailAttachment;
import org.openlmis.email.domain.EmailMessage;
import org.openlmis.email.repository.mapper.EmailNotificationMapper;
import org.springframework.mail.SimpleMailMessage;
import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.anyLong;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@Category(UnitTests.class)
@RunWith(MockitoJUnitRunner.class)
public class EmailNotificationRepositoryTest {
@Mock
EmailNotificationMapper mapper;
@InjectMocks
EmailNotificationRepository repository;
@Test
public void shouldQueueMessage() throws Exception {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo("test@gmail.com");
message.setSubject("the subject");
message.setText("The main message.");
repository.queueMessage(message);
verify(mapper).insert(anyString(), anyString(), anyString(), anyBoolean());
}
@Test
public void shouldInsertEmailMessageWhenNoAttachments() throws Exception {
EmailMessage message = generateEmailMessage();
repository.queueEmailMessage(message);
verify(mapper).insertEmailMessage(message);
}
@Test
public void shouldInsertEmailMessageAndRelationWhenHasAttachments() throws Exception {
EmailMessage message = generateEmailMessage();
message.addEmailAttachment(generateEmailAttachment());
message.addEmailAttachment(generateEmailAttachment());
repository.queueEmailMessage(message);
verify(mapper).insertEmailMessage(message);
verify(mapper, times(2)).insertEmailAttachmentsRelation(anyLong(), anyLong());
}
private EmailMessage generateEmailMessage() {
EmailMessage message = new EmailMessage();
message.setTo("test@dev.org");
message.setText("The Test Message");
message.setSubject("test");
return message;
}
private EmailAttachment generateEmailAttachment() {
EmailAttachment attachment = new EmailAttachment();
attachment.setAttachmentName("test file");
attachment.setAttachmentPath("/path");
return attachment;
}
}