function LayoutPluginManagerTest::testGetDefinition
Same name in other branches
- 9 core/tests/Drupal/Tests/Core/Layout/LayoutPluginManagerTest.php \Drupal\Tests\Core\Layout\LayoutPluginManagerTest::testGetDefinition()
- 8.9.x core/tests/Drupal/Tests/Core/Layout/LayoutPluginManagerTest.php \Drupal\Tests\Core\Layout\LayoutPluginManagerTest::testGetDefinition()
- 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 134
Class
- LayoutPluginManagerTest
- @coversDefaultClass \Drupal\Core\Layout\LayoutPluginManager @group Layout
Namespace
Drupal\Tests\Core\LayoutCode
public function testGetDefinition() : void {
$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->assertNull($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->assertNull($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']);
// Check that arbitrary property value gets set correctly.
$this->assertSame('ipsum', $layout_definition->get('lorem'));
$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->assertNull($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']);
// Check that arbitrary property value gets set correctly.
$this->assertSame('adipiscing', $layout_definition->get('consectetur'));
$layout_definition = $this->layoutPluginManager
->getDefinition('plugin_provided_by_annotation_layout');
$this->assertSame('plugin_provided_by_annotation_layout', $layout_definition->id());
$this->assertEquals('Layout by annotation plugin', $layout_definition->getLabel());
$this->assertEquals('Columns: 2', $layout_definition->getCategory());
$this->assertEquals('Test layout provided by annotated plugin', $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-annotation-layout', $layout_definition->getTemplate());
$this->assertSame($core_path, $layout_definition->getPath());
$this->assertNull($layout_definition->getLibrary());
$this->assertSame('plugin_provided_annotation_layout', $layout_definition->getThemeHook());
$this->assertSame("{$core_path}/templates", $layout_definition->getTemplatePath());
$this->assertSame('core', $layout_definition->getProvider());
$this->assertSame('left', $layout_definition->getDefaultRegion());
$this->assertSame('Drupal\\Core\\Plugin\\Layout\\TestAnnotationLayout', $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']);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.