function SimplenewsSourceTestCase::testSendCaching in Simplenews 7.2
Same name and namespace in other branches
- 7 tests/simplenews.test \SimplenewsSourceTestCase::testSendCaching()
Test sending a newsletter to 100 recipients with caching enabled.
File
- tests/
simplenews.test, line 2810 - Simplenews test functions.
Class
- SimplenewsSourceTestCase
- Test cases for creating and sending newsletters.
Code
function testSendCaching() {
$this
->setUpSubscribers(100);
// Enable build caching.
$edit = array(
'simplenews_source_cache' => 'SimplenewsSourceCacheBuild',
);
$this
->drupalPost('admin/config/services/simplenews/settings/mail', $edit, t('Save configuration'));
$edit = array(
'title' => $this
->randomName(),
'body[und][0][value]' => "Mail token: <strong>[simplenews-subscriber:mail]</strong>",
);
$this
->drupalPost('node/add/simplenews', $edit, 'Save');
$this
->assertTrue(preg_match('|node/(\\d+)$|', $this
->getUrl(), $matches), 'Node created');
$node = node_load($matches[1]);
// Add node to spool.
simplenews_add_node_to_spool($node);
// Unsubscribe one of the recipients to make sure that he doesn't receive
// the mail.
simplenews_unsubscribe(array_shift($this->subscribers), $this
->getRandomNewsletter(), FALSE, 'test');
$before = microtime(TRUE);
simplenews_mail_spool();
$after = microtime(TRUE);
// Make sure that 99 mails have been sent.
$this
->assertEqual(99, count($this
->drupalGetMails()));
// Test that tokens are correctly replaced.
$newsletter_id = $this
->getRandomNewsletter();
foreach (array_slice($this
->drupalGetMails(), 0, 3) as $mail) {
// Make sure that the same mail was used in the body token as it has been
// sent to. Also verify that the mail is plaintext.
$this
->assertTrue(strpos($mail['body'], '*' . $mail['to'] . '*') !== FALSE);
$this
->assertFalse(strpos($mail['body'], '<strong>'));
// Make sure the body is only attached once.
$this
->assertEqual(1, preg_match_all('/Mail token/', $mail['body'], $matches));
$this
->assertTrue(strpos($mail['body'], t('Unsubscribe from this newsletter')));
// Make sure the mail has the correct unsubscribe hash.
$hash = simplenews_generate_hash($mail['to'], 'remove');
$this
->assertTrue(strpos($mail['body'], $hash), 'Correct hash is used in footer');
$this
->assertTrue(strpos($mail['headers']['List-Unsubscribe'], $hash), 'Correct hash is used in header');
}
// Report time. @todo: Find a way to actually do some assertions here.
$this
->pass(t('Mails have been sent in @sec seconds with build caching enabled.', array(
'@sec' => round($after - $before, 3),
)));
}