function DrupalKernelTest::testResetContainer

Same name and namespace in other branches
  1. 10 core/tests/Drupal/KernelTests/Core/DrupalKernel/DrupalKernelTest.php \Drupal\KernelTests\Core\DrupalKernel\DrupalKernelTest::testResetContainer()

@covers ::resetContainer

File

core/tests/Drupal/KernelTests/Core/DrupalKernel/DrupalKernelTest.php, line 267

Class

DrupalKernelTest
Tests DIC compilation to disk.

Namespace

Drupal\KernelTests\Core\DrupalKernel

Code

public function testResetContainer() : void {
    $modules_enabled = [
        'system' => 'system',
        'user' => 'user',
    ];
    $request = Request::createFromGlobals();
    $kernel = $this->getTestKernel($request, $modules_enabled);
    $container = $kernel->getContainer();
    // Ensure services are reset when ::resetContainer is called.
    $this->assertFalse($container->initialized('renderer'));
    $renderer = $container->get('renderer');
    $this->assertTrue($container->initialized('renderer'));
    // Ensure the current user is maintained through a container reset.
    $this->assertSame(0, $container->get('current_user')
        ->id());
    $container->get('current_user')
        ->setInitialAccountId(2);
    // Ensure messages are maintained through a container reset.
    $this->assertEmpty($container->get('messenger')
        ->messagesByType('Container reset'));
    $container->get('messenger')
        ->addMessage('Test reset', 'Container reset');
    $this->assertSame([
        'Test reset',
    ], $container->get('messenger')
        ->messagesByType('Container reset'));
    // Ensure persisted services are persisted.
    $request_stack = $container->get('request_stack');
    $kernel->resetContainer();
    // Ensure services are reset when ::resetContainer is called.
    $this->assertFalse($container->initialized('renderer'));
    $this->assertNotSame($renderer, $container->get('renderer'));
    $this->assertTrue($container->initialized('renderer'));
    $this->assertSame($kernel, $container->get('kernel'));
    // Ensure the current user is maintained through a container reset.
    $this->assertSame(2, $container->get('current_user')
        ->id());
    // Ensure messages are maintained through a container reset.
    $this->assertSame([
        'Test reset',
    ], $container->get('messenger')
        ->messagesByType('Container reset'));
    // Ensure persisted services are persisted.
    $this->assertSame($request_stack, $container->get('request_stack'));
}

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