You are here

public function LayoutPluginManagerTest::testGetDefinition in Drupal 8

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Core/Layout/LayoutPluginManagerTest.php \Drupal\Tests\Core\Layout\LayoutPluginManagerTest::testGetDefinition()
  2. 10 core/tests/Drupal/Tests/Core/Layout/LayoutPluginManagerTest.php \Drupal\Tests\Core\Layout\LayoutPluginManagerTest::testGetDefinition()

@covers ::getDefinition @covers ::processDefinition

File

core/tests/Drupal/Tests/Core/Layout/LayoutPluginManagerTest.php, line 114

Class

LayoutPluginManagerTest
@coversDefaultClass \Drupal\Core\Layout\LayoutPluginManager @group Layout

Namespace

Drupal\Tests\Core\Layout

Code

public function testGetDefinition() {
  $layout_definition = $this->layoutPluginManager
    ->getDefinition('theme_a_provided_layout');
  $this
    ->assertSame('theme_a_provided_layout', $layout_definition
    ->id());
  $this
    ->assertSame('2 column layout', (string) $layout_definition
    ->getLabel());
  $this
    ->assertSame('Columns: 2', (string) $layout_definition
    ->getCategory());
  $this
    ->assertSame('A theme provided layout', (string) $layout_definition
    ->getDescription());
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $layout_definition
    ->getLabel());
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $layout_definition
    ->getCategory());
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $layout_definition
    ->getDescription());
  $this
    ->assertSame('twocol', $layout_definition
    ->getTemplate());
  $this
    ->assertSame('themes/theme_a/templates', $layout_definition
    ->getPath());
  $this
    ->assertSame('theme_a/twocol', $layout_definition
    ->getLibrary());
  $this
    ->assertSame('twocol', $layout_definition
    ->getThemeHook());
  $this
    ->assertSame('themes/theme_a/templates', $layout_definition
    ->getTemplatePath());
  $this
    ->assertSame('theme_a', $layout_definition
    ->getProvider());
  $this
    ->assertSame('right', $layout_definition
    ->getDefaultRegion());
  $this
    ->assertSame(LayoutDefault::class, $layout_definition
    ->getClass());
  $expected_regions = [
    'left' => [
      'label' => new TranslatableMarkup('Left region', [], [
        'context' => 'layout_region',
      ]),
    ],
    'right' => [
      'label' => new TranslatableMarkup('Right region', [], [
        'context' => 'layout_region',
      ]),
    ],
  ];
  $regions = $layout_definition
    ->getRegions();
  $this
    ->assertEquals($expected_regions, $regions);
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $regions['left']['label']);
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $regions['right']['label']);
  $layout_definition = $this->layoutPluginManager
    ->getDefinition('module_a_provided_layout');
  $this
    ->assertSame('module_a_provided_layout', $layout_definition
    ->id());
  $this
    ->assertSame('1 column layout', (string) $layout_definition
    ->getLabel());
  $this
    ->assertSame('Columns: 1', (string) $layout_definition
    ->getCategory());
  $this
    ->assertSame('A module provided layout', (string) $layout_definition
    ->getDescription());
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $layout_definition
    ->getLabel());
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $layout_definition
    ->getCategory());
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $layout_definition
    ->getDescription());
  $this
    ->assertSame(NULL, $layout_definition
    ->getTemplate());
  $this
    ->assertSame('modules/module_a/layouts', $layout_definition
    ->getPath());
  $this
    ->assertSame('module_a/onecol', $layout_definition
    ->getLibrary());
  $this
    ->assertSame('onecol', $layout_definition
    ->getThemeHook());
  $this
    ->assertSame(NULL, $layout_definition
    ->getTemplatePath());
  $this
    ->assertSame('module_a', $layout_definition
    ->getProvider());
  $this
    ->assertSame('top', $layout_definition
    ->getDefaultRegion());
  $this
    ->assertSame(LayoutDefault::class, $layout_definition
    ->getClass());
  $expected_regions = [
    'top' => [
      'label' => new TranslatableMarkup('Top region', [], [
        'context' => 'layout_region',
      ]),
    ],
    'bottom' => [
      'label' => new TranslatableMarkup('Bottom region', [], [
        'context' => 'layout_region',
      ]),
    ],
  ];
  $regions = $layout_definition
    ->getRegions();
  $this
    ->assertEquals($expected_regions, $regions);
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $regions['top']['label']);
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $regions['bottom']['label']);
  $core_path = '/core/lib/Drupal/Core';
  $layout_definition = $this->layoutPluginManager
    ->getDefinition('plugin_provided_layout');
  $this
    ->assertSame('plugin_provided_layout', $layout_definition
    ->id());
  $this
    ->assertEquals('Layout plugin', $layout_definition
    ->getLabel());
  $this
    ->assertEquals('Columns: 1', $layout_definition
    ->getCategory());
  $this
    ->assertEquals('Test layout', $layout_definition
    ->getDescription());
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $layout_definition
    ->getLabel());
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $layout_definition
    ->getCategory());
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $layout_definition
    ->getDescription());
  $this
    ->assertSame('plugin-provided-layout', $layout_definition
    ->getTemplate());
  $this
    ->assertSame($core_path, $layout_definition
    ->getPath());
  $this
    ->assertSame(NULL, $layout_definition
    ->getLibrary());
  $this
    ->assertSame('plugin_provided_layout', $layout_definition
    ->getThemeHook());
  $this
    ->assertSame("{$core_path}/templates", $layout_definition
    ->getTemplatePath());
  $this
    ->assertSame('core', $layout_definition
    ->getProvider());
  $this
    ->assertSame('main', $layout_definition
    ->getDefaultRegion());
  $this
    ->assertSame('Drupal\\Core\\Plugin\\Layout\\TestLayout', $layout_definition
    ->getClass());
  $expected_regions = [
    'main' => [
      'label' => new TranslatableMarkup('Main Region', [], [
        'context' => 'layout_region',
      ]),
    ],
  ];
  $regions = $layout_definition
    ->getRegions();
  $this
    ->assertEquals($expected_regions, $regions);
  $this
    ->assertInstanceOf(TranslatableMarkup::class, $regions['main']['label']);
}