package de.bht.fpa.mail.common.testdata; import static de.bht.fpa.mail.s000000.common.mail.model.builder.Builders.newMessageBuilder; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import java.io.FilenameFilter; import java.util.Collection; import javax.xml.bind.JAXB; import org.junit.After; import org.junit.Before; import org.junit.Test; import de.bht.fpa.mail.s000000.common.mail.model.Message; import de.bht.fpa.mail.s000000.common.mail.testdata.FileSystemTestDataProvider; public class FileSystemTestDataProviderTest { private File tempDirectory; private File mailDataDirectory; private int mailDirectorySize; @Before public void setUp() { tempDirectory = new File("temp"); tempDirectory.mkdir(); mailDataDirectory = new File("maildata"); if (!mailDataDirectory.exists()) { fail("'maildata' directory is missing"); } mailDirectorySize = mailDataDirectory.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith("xml"); } }).length; } @After public void cleanUp() { tempDirectory.delete(); } @Test(expected = Exception.class) public void shouldFailIfDirectoryDoesNotExists() { new FileSystemTestDataProvider(new File("some_non_existent_directory")); } @Test public void shouldWorkWithEmptyDirectories() { new FileSystemTestDataProvider(tempDirectory).getMessages(); } @Test public void shouldWorkWithOneMessage() { Message message = newMessageBuilder().build(); JAXB.marshal(message, new File(tempDirectory, "01.xml")); Collection<Message> messages = new FileSystemTestDataProvider(tempDirectory).getMessages(); assertThat(messages, is(notNullValue())); assertThat(messages.size(), is(1)); assertThat(messages.iterator().next(), equalTo(message)); } @Test public void shouldWorkWithManyMessages() { Collection<Message> messages = new FileSystemTestDataProvider(mailDataDirectory).getMessages(); assertThat(messages, is(notNullValue())); assertThat(messages.size(), is(mailDirectorySize)); for (Message message : messages) { checkMessage(message); } } protected void checkMessage(Message message) { assertThat(message.getId(), is(notNullValue())); assertTrue(message.getId() > -1); assertThat(message.getText(), is(notNullValue())); assertThat(message.getSubject(), is(notNullValue())); assertThat(message.getSender(), is(notNullValue())); assertThat(message.getSender().getId(), is(notNullValue())); assertThat(message.getImportance(), is(notNullValue())); assertThat(message.getReceived(), is(notNullValue())); assertThat(message.getSent(), is(notNullValue())); assertThat(message.getRecipients().size(), is(greaterThan(0))); assertThat(message.getRecipients().get(0).getId(), is(notNullValue())); assertThat(message.getAttachment().size(), is(0)); assertThat(message.isRead(), is(notNullValue())); } }