package de.bht.fpa.mail.common.testdata;
import static com.google.common.collect.Lists.newArrayList;
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 java.util.Collection;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.junit.Test;
import org.junit.runner.RunWith;
import de.bht.fpa.mail.s000000.common.mail.model.Message;
import de.bht.fpa.mail.s000000.common.mail.testdata.ITestDataProvider;
import de.bht.fpa.mail.s000000.common.mail.testdata.MessageTestDataProvider;
@RunWith(JMock.class)
public class MessageTestDataProviderTest {
private final Mockery mockery = new JUnit4Mockery();
@Test(expected = Exception.class)
public void shouldFailIfNoTestDataProviderIsSet() {
new MessageTestDataProvider().getMessages();
}
@Test
public void shouldCallTestDataProviderForMessages() {
MessageTestDataProvider messageTestDataProvider = new MessageTestDataProvider();
final ITestDataProvider testDataProvider = mockery.mock(ITestDataProvider.class);
final Message message = newMessageBuilder().build();
mockery.checking(new Expectations() {
{
oneOf(testDataProvider).getMessages();
will(returnValue(newArrayList(message)));
}
});
messageTestDataProvider.setTestDataProvider(testDataProvider);
Collection<Message> messages = messageTestDataProvider.getMessages();
mockery.assertIsSatisfied();
assertThat(messages.iterator().next(), equalTo(message));
}
}