View source
<?php
namespace Drupal\Tests\message\Functional;
use Drupal\message\Entity\Message;
use Drupal\message\Entity\MessageTemplate;
class MessageCron extends MessageTestBase {
protected $account;
protected $purgeManager;
protected $cron;
protected $timeService;
public function setUp() {
parent::setUp();
$this->purgeManager = $this->container
->get('plugin.manager.message.purge');
$this->account = $this
->drupalCreateUser();
$this->cron = $this->container
->get('cron');
$this->timeService = $this->container
->get('datetime.time');
}
public function testPurge() {
$quota = $this->purgeManager
->createInstance('quota', [
'data' => [
'quota' => 2,
],
]);
$days = $this->purgeManager
->createInstance('days', [
'data' => [
'days' => 0,
],
]);
$settings = [
'purge_override' => TRUE,
'purge_methods' => [
'quota' => $quota
->getConfiguration(),
'days' => $days
->getConfiguration(),
],
];
$message_template = MessageTemplate::create([
'template' => 'template1',
]);
$message_template
->setSettings($settings)
->save();
$message_template = MessageTemplate::load($message_template
->id());
$this
->assertEqual($message_template
->getSetting('purge_methods'), $settings['purge_methods'], t('Purge settings are stored in message template.'));
$quota = $this->purgeManager
->createInstance('quota', [
'data' => [
'quota' => 1,
],
]);
$days = $this->purgeManager
->createInstance('days', [
'data' => [
'days' => 2,
],
]);
$settings = [
'purge_override' => TRUE,
'purge_methods' => [
'quota' => $quota
->getConfiguration(),
'days' => $days
->getConfiguration(),
],
];
$message_template = MessageTemplate::create([
'template' => 'template2',
]);
$message_template
->setSettings($settings)
->save();
$settings['purge_enabled'] = FALSE;
$settings = [
'purge_override' => TRUE,
'purge_methods' => [],
];
$message_template = MessageTemplate::create([
'template' => 'template3',
]);
$message_template
->setSettings($settings)
->save();
for ($i = 0; $i < 4; $i++) {
Message::Create([
'template' => 'template1',
])
->setCreatedTime($this->timeService
->getRequestTime() - 3 * 86400)
->setOwnerId($this->account
->id())
->save();
}
for ($i = 0; $i < 3; $i++) {
Message::Create([
'template' => 'template2',
])
->setCreatedTime($this->timeService
->getRequestTime() - 3 * 86400)
->setOwnerId($this->account
->id())
->save();
}
for ($i = 0; $i < 3; $i++) {
Message::Create([
'template' => 'template3',
])
->setCreatedTime($this->timeService
->getRequestTime() - 3 * 86400)
->setOwnerId($this->account
->id())
->save();
}
$this->cron
->run();
$this
->assertFalse(array_diff(Message::queryByTemplate('template1'), [
3,
4,
]), 'Two messages deleted due to quota definition.');
$this
->assertEqual(Message::queryByTemplate('template2'), [], 'Three messages deleted due to age definition.');
$remaining = [
8,
9,
10,
];
$this
->assertFalse(array_diff(Message::queryByTemplate('template3'), $remaining), 'Messages with disabled purging settings were not deleted.');
}
public function testPurgeGlobalSettings() {
$quota = $this->purgeManager
->createInstance('quota', [
'data' => [
'quota' => 1,
],
]);
$days = $this->purgeManager
->createInstance('days', [
'data' => [
'days' => 2,
],
]);
$methods = [
'quota' => $quota
->getConfiguration(),
'days' => $days
->getConfiguration(),
];
\Drupal::configFactory()
->getEditable('message.settings')
->set('purge_enable', TRUE)
->set('purge_methods', $methods)
->save();
MessageTemplate::create([
'template' => 'template1',
])
->save();
$data = [
'purge_override' => TRUE,
'purge_methods' => [],
];
MessageTemplate::create([
'template' => 'template2',
])
->setSettings($data)
->save();
for ($i = 0; $i < 2; $i++) {
Message::create([
'template' => 'template1',
])
->setCreatedTime(time() - 3 * 86400)
->setOwnerId($this->account
->id())
->save();
Message::create([
'template' => 'template2',
])
->setCreatedTime(time() - 3 * 86400)
->setOwnerId($this->account
->id())
->save();
}
$this->cron
->run();
$this
->assertEqual(count(Message::queryByTemplate('template1')), 0, t('All template1 messages deleted.'));
$this
->assertEqual(count(Message::queryByTemplate('template2')), 2, t('Template2 messages were not deleted due to settings override.'));
}
}