package mireka.transmission.queuing;
import static mireka.ExampleAddress.*;
import java.util.Arrays;
import mireka.ExampleMail;
import mireka.transmission.Mail;
import mireka.transmission.immediate.ImmediateSender;
import mireka.transmission.queue.QueueStorageException;
import mireka.transmission.queue.ScheduleFileDirQueue;
import mockit.Expectations;
import mockit.Injectable;
import mockit.Tested;
import org.junit.Test;
public class QueuingTransmitterTest {
@Tested
private QueuingTransmitter transmitter;
@Injectable
private ScheduleFileDirQueue queue;
@Injectable
private ImmediateSender immediateSender;
private final Mail mail = ExampleMail.simple();
@Test
public void testTransmitTwoToSameDomain() throws QueueStorageException {
mail.recipients = Arrays.asList(JANE_AS_RECIPIENT, JOHN_AS_RECIPIENT);
new Expectations() {
{
immediateSender.singleDomainOnly();
result = true;
queue.add((Mail)any);
}
};
transmitter.transmit(mail);
}
@Test
public void testTransmitTwoToDifferentDomain() throws QueueStorageException {
mail.recipients =
Arrays.asList(JANE_AS_RECIPIENT, NANCY_NET_AS_RECIPIENT);
new Expectations() {
{
immediateSender.singleDomainOnly();
result = true;
queue.add((Mail) any);
times = 2;
}
};
transmitter.transmit(mail);
}
@Test
public void testTransmitTwoToDifferentDomainButSmarthost()
throws QueueStorageException {
mail.recipients =
Arrays.asList(JANE_AS_RECIPIENT, NANCY_NET_AS_RECIPIENT);
new Expectations() {
{
immediateSender.singleDomainOnly();
result = false;
queue.add((Mail) any);
times = 1;
}
};
transmitter.transmit(mail);
}
}