public function UltimateCronQueueTest::testOverriddenProcessing in Ultimate Cron 8.2
Tests behavior when ultimate_cron overrides the cron processing.
File
- tests/
src/ Kernel/ UltimateCronQueueTest.php, line 106
Class
- UltimateCronQueueTest
- Update feeds on cron.
Namespace
Drupal\Tests\ultimate_cron\KernelCode
public function testOverriddenProcessing() {
$job = CronJob::load(CronJobInterface::QUEUE_ID_PREFIX . 'cron_queue_test_broken_queue');
$this
->assertNull($job);
$this
->config('ultimate_cron.settings')
->set('queue.enabled', TRUE)
->save();
\Drupal::service('ultimate_cron.discovery')
->discoverCronJobs();
$job = CronJob::load(CronJobInterface::QUEUE_ID_PREFIX . 'cron_queue_test_broken_queue');
$this
->assertTrue($job instanceof CronJobInterface);
/** @var \Drupal\Core\Queue\QueueInterface $queue */
$queue = $this->container
->get('queue')
->get('cron_queue_test_broken_queue');
// Enqueue several item for processing.
$queue
->createItem('process');
$queue
->createItem('process');
$queue
->createItem('process');
$this
->assertEquals(3, $queue
->numberOfItems());
// Run the job, this should process them.
$job
->run(t('Test launch'));
$this
->assertEquals(0, $queue
->numberOfItems());
// Check item delay feature.
$this
->config('ultimate_cron.settings')
->set('queue.delays.item_delay', 0.5)
->save();
$queue
->createItem('process');
$queue
->createItem('process');
$queue
->createItem('process');
$this
->assertEquals(3, $queue
->numberOfItems());
// There are 3 items, the implementation doesn't wait for the first, that
// means this should between 1 and 1.5 seconds.
$before = microtime(TRUE);
$job
->run(t('Test launch'));
$after = microtime(TRUE);
$this
->assertEquals(0, $queue
->numberOfItems());
$this
->assertTrue($after - $before > 1);
$this
->assertTrue($after - $after < 1.5);
// @todo Test empty delay, causes a wait of 60 seconds with the test queue
// worker.
}