package org.openlmis.email.repository.mapper;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.openlmis.db.categories.IntegrationTests;
import org.openlmis.email.domain.EmailAttachment;
import org.openlmis.email.domain.EmailMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
@Category(IntegrationTests.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:test-applicationContext-db.xml"})
@Transactional
@TransactionConfiguration(defaultRollback = true, transactionManager = "openLmisTransactionManager")
public class EmailNotificationMapperIT {
@Autowired
EmailNotificationMapper mapper;
@Test
public void shouldInsert() throws Exception {
String to = "test@dev.org";
String content = "The Test Message";
String subject = "The subject";
Integer count = mapper.insert(to, content, subject, false);
assertThat(count, is(1));
}
@Test
public void shouldReturnIdAfterInsertEmailMessage() throws Exception {
EmailMessage message = generateEmailMessage();
Integer count = mapper.insertEmailMessage(message);
assertThat(count, is(1));
assertThat(message.getId() > 0, is(true));
}
@Test
public void shouldInsertEmailAttachment() throws Exception {
EmailAttachment attachment = generateEmailAttachment();
Integer count = mapper.insertEmailAttachment(attachment);
assertThat(count, is(1));
assertThat(attachment.getId() > 0, is(true));
}
@Test
public void shouldInsertEmailAttachmentRelation() throws Exception {
EmailAttachment attachment1 = generateEmailAttachment();
EmailAttachment attachment2 = generateEmailAttachment();
mapper.insertEmailAttachment(attachment1);
mapper.insertEmailAttachment(attachment2);
EmailMessage message = generateEmailMessage();
mapper.insertEmailMessage(message);
mapper.insertEmailAttachmentsRelation(message.getId(), attachment1.getId());
mapper.insertEmailAttachmentsRelation(message.getId(), attachment2.getId());
List<EmailAttachment> attachmentList = mapper.queryEmailAttachmentsByEmailId(message.getId());
assertThat(attachmentList.size(), is(2));
}
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");
attachment.setAttachmentFileType("application/excel");
return attachment;
}
}