function DerivativeTest::testDerivativeDecorator

Tests getDefinitions() and getDefinition() with a derivativeDecorator.

File

drupal/core/modules/system/lib/Drupal/system/Tests/Plugin/DerivativeTest.php, line 26
Definition of Drupal\system\Tests\Plugin\DerivativeTest.

Class

DerivativeTest
Tests that derivative plugins are correctly discovered.

Namespace

Drupal\system\Tests\Plugin

Code

function testDerivativeDecorator() {

  // Ensure that getDefinitions() returns the expected definitions.
  $this
    ->assertIdentical($this->mockBlockManager
    ->getDefinitions(), $this->mockBlockExpectedDefinitions);

  // Ensure that getDefinition() returns the expected definition.
  foreach ($this->mockBlockExpectedDefinitions as $id => $definition) {
    $this
      ->assertIdentical($this->mockBlockManager
      ->getDefinition($id), $definition);
  }

  // Ensure that NULL is returned as the definition of a non-existing base
  // plugin, a non-existing derivative plugin, or a base plugin that may not
  // be used without deriving.
  $this
    ->assertIdentical($this->mockBlockManager
    ->getDefinition('non_existing'), NULL, 'NULL returned as the definition of a non-existing base plugin.');
  $this
    ->assertIdentical($this->mockBlockManager
    ->getDefinition('menu:non_existing'), NULL, 'NULL returned as the definition of a non-existing derivative plugin.');
  $this
    ->assertIdentical($this->mockBlockManager
    ->getDefinition('menu'), NULL, 'NULL returned as the definition of a base plugin that may not be used without deriving.');
}