View source
<?php
namespace Drupal\Tests\ultimate_cron\Kernel;
use Drupal\KernelTests\KernelTestBase;
use Drupal\ultimate_cron\Entity\CronJob;
use Drupal\ultimate_cron\Logger\LogEntry;
use Drupal\ultimate_cron\Plugin\ultimate_cron\Logger\CacheLogger;
use Drupal\ultimate_cron\Plugin\ultimate_cron\Logger\DatabaseLogger;
class LoggerPluginTest extends KernelTestBase {
public static $modules = array(
'ultimate_cron',
'ultimate_cron_logger_test',
'system',
);
function testDiscovery() {
$manager = \Drupal::service('plugin.manager.ultimate_cron.logger');
$plugins = $manager
->getDefinitions();
$this
->assertCount(2, $plugins);
$cache = $manager
->createInstance('cache');
$this
->assertTrue($cache instanceof CacheLogger);
$this
->assertEquals('cache', $cache
->getPluginId());
$database = $manager
->createInstance('database');
$this
->assertTrue($database instanceof DatabaseLogger);
$this
->assertEquals('database', $database
->getPluginId());
}
function testCleanup() {
$this
->installSchema('ultimate_cron', [
'ultimate_cron_log',
'ultimate_cron_lock',
]);
\Drupal::service('ultimate_cron.discovery')
->discoverCronJobs();
$job = CronJob::load('ultimate_cron_logger_test_cron');
$job
->setConfiguration('logger', [
'retain' => 10,
]);
$job
->save();
for ($i = 0; $i < 12; $i++) {
$job
->getPlugin('launcher')
->launch($job);
}
$log_entries = $job
->getLogEntries(ULTIMATE_CRON_LOG_TYPE_ALL, 15);
$this
->assertCount(13, $log_entries);
ultimate_cron_cron();
$log_entries = $job
->getLogEntries(ULTIMATE_CRON_LOG_TYPE_ALL, 15);
$this
->assertCount(10, $log_entries);
$job
->setConfiguration('logger', [
'expire' => 60,
'method' => DatabaseLogger::CLEANUP_METHOD_EXPIRE,
]);
$job
->save();
$ids = array_slice(array_keys($log_entries), 5);
\Drupal::database()
->update('ultimate_cron_log')
->expression('start_time', 'start_time - 65')
->condition('lid', $ids, 'IN')
->execute();
ultimate_cron_cron();
$log_entries = $job
->getLogEntries(ULTIMATE_CRON_LOG_TYPE_ALL, 15);
$this
->assertCount(6, $log_entries);
}
function testCacheLogger() {
$this
->installSchema('ultimate_cron', [
'ultimate_cron_log',
'ultimate_cron_lock',
]);
\Drupal::service('ultimate_cron.discovery')
->discoverCronJobs();
$job = CronJob::load('ultimate_cron_logger_test_cron');
$job
->setLoggerId('cache');
$job
->save();
$job
->getPlugin('launcher')
->launch($job);
$job
->getPlugin('launcher')
->launch($job);
$log_entries = $job
->getLogEntries(ULTIMATE_CRON_LOG_TYPE_ALL, 3);
$this
->assertCount(1, $log_entries);
$log_entry = reset($log_entries);
$this
->assertTrue($log_entry instanceof LogEntry);
$this
->assertEquals('ultimate_cron_logger_test_cron', $log_entry->name);
$this
->assertEquals('Launched manually by anonymous (0)', (string) $log_entry
->formatInitMessage());
}
}