CronJobTest.php in Ultimate Cron 8.2
File
tests/src/Kernel/CronJobTest.php
View source
<?php
namespace Drupal\Tests\ultimate_cron\Kernel;
use Drupal\KernelTests\KernelTestBase;
use Drupal\ultimate_cron\CronRule;
use Drupal\ultimate_cron\Entity\CronJob;
class CronJobTest extends KernelTestBase {
public static $modules = array(
'ultimate_cron',
);
public function setup() {
parent::setUp();
$this
->installSchema('ultimate_cron', array(
'ultimate_cron_log',
'ultimate_cron_lock',
));
}
function testGeneratedJob() {
$values = array(
'title' => 'ultimate cron fake cronjob title',
'id' => 'ultimate_cron_fake_job',
'module' => 'ultimate_cron_fake',
'callback' => 'ultimate_cron_fake_cron',
);
$job = CronJob::create($values);
$job
->save();
$this
->assertEquals(0, CronJob::load($values['id'])
->loadLatestLogEntry()->start_time);
$this
->assertEquals(0, \Drupal::state()
->get('ultimate_cron.cron_run_counter'));
\Drupal::service('cron')
->run();
$this
->assertEquals(1, \Drupal::state()
->get('ultimate_cron.cron_run_counter'));
$cron = CronRule::factory('*/15+@ * * * *', time(), $job
->getUniqueID() & 0xff);
$scheduled_cron_time = $cron
->getLastSchedule();
$latest_log_entry = CronJob::load($values['id'])
->loadLatestLogEntry()->start_time;
$this
->assertNotEquals(0, $latest_log_entry);
$log_entry_future = $scheduled_cron_time + 2;
\Drupal::database()
->update('ultimate_cron_log')
->fields(array(
'start_time' => $log_entry_future,
))
->condition('name', $values['id'])
->execute();
\Drupal::service('cron')
->run();
$cron_last_ran = CronJob::load($values['id'])
->loadLatestLogEntry()->start_time;
$this
->assertEquals($log_entry_future, $cron_last_ran);
$this
->assertEquals(1, \Drupal::state()
->get('ultimate_cron.cron_run_counter'));
$log_entry_past = $scheduled_cron_time - 2;
\Drupal::database()
->update('ultimate_cron_log')
->fields(array(
'start_time' => $log_entry_past,
))
->condition('name', $values['id'])
->execute();
\Drupal::service('cron')
->run();
$this
->assertNotEquals($log_entry_past, $latest_log_entry);
$this
->assertEquals(2, \Drupal::state()
->get('ultimate_cron.cron_run_counter'));
}
}
Classes
Name |
Description |
CronJobTest |
Cron Job Testing if a job runs when it is supposed to. |