AutomatedCronTest.php

Namespace

Drupal\Tests\automated_cron\Kernel

File

core/modules/automated_cron/tests/src/Kernel/AutomatedCronTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\automated_cron\Kernel;

use Drupal\KernelTests\KernelTestBase;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Tests for automated_cron.
 *
 * @group automated_cron
 */
class AutomatedCronTest extends KernelTestBase {
  
  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'automated_cron',
  ];
  
  /**
   * Tests that automated cron runs cron on an HTTP request.
   *
   * @covers \Drupal\automated_cron\EventSubscriber\AutomatedCron::onTerminate
   */
  public function testRunsCronOnHttpRequest() : void {
    // Set automated_cron interval and times.
    // Any interval > 0 should work.
    $this->config('automated_cron.settings')
      ->set('interval', 10800)
      ->save();
    $request = new Request();
    // Cron uses `$_SERVER['REQUEST_TIME']` to set `system.cron_last`
    // because there is no request stack, so we set the request time
    // to the same.
    $expected = $_SERVER['REQUEST_TIME'];
    $request->server
      ->set('REQUEST_TIME', $expected);
    // Invoke `AutomatedCron::onTerminate` and check result.
    $this->assertNull($this->container
      ->get('state')
      ->get('system.cron_last'));
    $this->container
      ->get('kernel')
      ->terminate($request, new Response());
    $this->assertEquals($expected, $this->container
      ->get('state')
      ->get('system.cron_last'));
  }

}

Classes

Title Deprecated Summary
AutomatedCronTest Tests for automated_cron.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.