$t->diag('->flushQueue()'); $mailer = new sfMailer($dispatcher, array('delivery_strategy' => 'none')); $mailer->composeAndSend('*****@*****.**', '*****@*****.**', 'Subject', 'Body'); try { $mailer->flushQueue(); $t->fail('->flushQueue() throws a LogicException exception if the delivery_strategy is not spool'); } catch (LogicException $e) { $t->pass('->flushQueue() throws a LogicException exception if the delivery_strategy is not spool'); } $mailer = new sfMailer($dispatcher, array('delivery_strategy' => 'spool', 'spool_class' => 'TestSpool', 'spool_arguments' => array('TestMailMessage'), 'transport' => array('class' => 'TestMailerTransport'))); $transport = $mailer->getRealtimeTransport(); $spool = $mailer->getTransport()->getSpool(); $mailer->composeAndSend('*****@*****.**', '*****@*****.**', 'Subject', 'Body'); $t->is($spool->getQueuedCount(), 1, '->flushQueue() sends messages in the spool'); $t->is($transport->getSentCount(), 0, '->flushQueue() sends messages in the spool'); $mailer->flushQueue(); $t->is($spool->getQueuedCount(), 0, '->flushQueue() sends messages in the spool'); $t->is($transport->getSentCount(), 1, '->flushQueue() sends messages in the spool'); // ->sendNextImmediately() $t->diag('->sendNextImmediately()'); $mailer = new sfMailer($dispatcher, array('logging' => true, 'delivery_strategy' => 'spool', 'spool_class' => 'TestSpool', 'spool_arguments' => array('TestMailMessage'), 'transport' => array('class' => 'TestMailerTransport'))); $transport = $mailer->getRealtimeTransport(); $spool = $mailer->getTransport()->getSpool(); $t->is($mailer->sendNextImmediately(), $mailer, '->sendNextImmediately() implements a fluid interface'); $mailer->composeAndSend('*****@*****.**', '*****@*****.**', 'Subject', 'Body'); $t->is($spool->getQueuedCount(), 0, '->sendNextImmediately() bypasses the spool'); $t->is($transport->getSentCount(), 1, '->sendNextImmediately() bypasses the spool'); $transport->reset(); $spool->reset(); $mailer->composeAndSend('*****@*****.**', '*****@*****.**', 'Subject', 'Body'); $t->is($spool->getQueuedCount(), 1, '->sendNextImmediately() bypasses the spool but only for the very next message');