function DerivativeDiscoveryDecoratorTest::testExistingDerivative

Same name in other branches
  1. 9 core/tests/Drupal/Tests/Core/Plugin/Discovery/DerivativeDiscoveryDecoratorTest.php \Drupal\Tests\Core\Plugin\Discovery\DerivativeDiscoveryDecoratorTest::testExistingDerivative()
  2. 8.9.x core/tests/Drupal/Tests/Core/Plugin/Discovery/DerivativeDiscoveryDecoratorTest.php \Drupal\Tests\Core\Plugin\Discovery\DerivativeDiscoveryDecoratorTest::testExistingDerivative()
  3. 11.x core/tests/Drupal/Tests/Core/Plugin/Discovery/DerivativeDiscoveryDecoratorTest.php \Drupal\Tests\Core\Plugin\Discovery\DerivativeDiscoveryDecoratorTest::testExistingDerivative()

Tests derivative definitions when a definition already exists.

File

core/tests/Drupal/Tests/Core/Plugin/Discovery/DerivativeDiscoveryDecoratorTest.php, line 185

Class

DerivativeDiscoveryDecoratorTest
Unit tests for the derivative discovery decorator.

Namespace

Drupal\Tests\Core\Plugin\Discovery

Code

public function testExistingDerivative() : void {
    $definitions = [];
    $definitions['non_container_aware_discovery'] = [
        'id' => 'non_container_aware_discovery',
        'deriver' => '\\Drupal\\Tests\\Core\\Plugin\\Discovery\\TestDerivativeDiscovery',
        'string' => 'string',
        'empty_string' => 'not_empty',
        'array' => [
            'one',
            'two',
        ],
        'empty_array' => [
            'three',
        ],
        'null_value' => TRUE,
    ];
    // This will clash with a derivative id.
    // @see \Drupal\Tests\Core\Plugin\Discovery\TestDerivativeDiscovery
    $definitions['non_container_aware_discovery:test_discovery_1'] = [
        'id' => 'non_container_aware_discovery:test_discovery_1',
        'string' => 'string',
        'empty_string' => '',
        'array' => [
            'one',
            'two',
        ],
        'empty_array' => [],
        'null_value' => NULL,
    ];
    $this->discoveryMain
        ->expects($this->any())
        ->method('getDefinitions')
        ->willReturn($definitions);
    $discovery = new DerivativeDiscoveryDecorator($this->discoveryMain);
    $returned_definitions = $discovery->getDefinitions();
    // If the definition was merged, there should only be two.
    $this->assertCount(2, $returned_definitions);
    $expected = $definitions['non_container_aware_discovery'];
    $expected['id'] = 'non_container_aware_discovery:test_discovery_1';
    $this->assertEquals($expected, $returned_definitions['non_container_aware_discovery:test_discovery_1']);
}

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