function AutomatedCronTest::testRunsCronOnHttpRequest

Tests that automated cron runs cron on an HTTP request.

@covers \Drupal\automated_cron\EventSubscriber\AutomatedCron::onTerminate

File

core/modules/automated_cron/tests/src/Kernel/AutomatedCronTest.php, line 28

Class

AutomatedCronTest
Tests for automated_cron.

Namespace

Drupal\Tests\automated_cron\Kernel

Code

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'));
}

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