function SimplenewsSourceTest::testSendNoCaching in Simplenews 8
Test with disabled caching.
File
- src/
Tests/ SimplenewsSourceTest.php, line 308 - Simplenews source test functions.
Class
- SimplenewsSourceTest
- Test cases for creating and sending newsletters.
Namespace
Drupal\simplenews\TestsCode
function testSendNoCaching() {
$this
->setUpSubscribers(100);
// Disable caching.
$yaml = new Yaml();
$directory = DRUPAL_ROOT . '/' . $this->siteDirectory;
$content = file_get_contents($directory . '/services.yml');
$services = $yaml
->parse($content);
$services['services']['simplenews.mail_cache'] = [
'class' => 'Drupal\\simplenews\\Mail\\MailCacheNone',
];
file_put_contents($directory . '/services.yml', $yaml
->dump($services));
$this
->rebuildContainer();
\Drupal::moduleHandler()
->loadAll();
$edit = array(
'title[0][value]' => $this
->randomString(10),
'body[0][value]' => "Mail token: <strong>[simplenews-subscriber:mail]</strong>",
'simplenews_issue' => 'default',
);
$this
->drupalPostForm('node/add/simplenews_issue', $edit, 'Save');
$this
->assertTrue(preg_match('|node/(\\d+)$|', $this
->getUrl(), $matches), 'Node created');
$node = Node::load($matches[1]);
// Add node to spool.
\Drupal::service('simplenews.spool_storage')
->addFromEntity($node);
$before = microtime(TRUE);
\Drupal::service('simplenews.mailer')
->sendSpool();
$after = microtime(TRUE);
// Make sure that 100 mails have been sent.
$this
->assertEqual(100, count($this
->drupalGetMails()));
// Test that tokens are correctly replaced.
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));
}
// Report time. @todo: Find a way to actually do some assertions here.
$this
->pass(t('Mails have been sent in @sec seconds with caching disabled.', array(
'@sec' => round($after - $before, 3),
)));
}