core_context-8.x-1.x-dev/tests/src/Functional/LayoutLibraryIntegrationTest.php

tests/src/Functional/LayoutLibraryIntegrationTest.php
<?php

namespace Drupal\Tests\core_context\Functional;

use Drupal\layout_builder\Section;
use Drupal\layout_builder\SectionComponent;
use Drupal\layout_library\Entity\Layout;
use Drupal\Tests\BrowserTestBase;

/**
 * Tests integration with Layout Library.
 *
 * @group core_context
 *
 * @requires module layout_library
 */
class LayoutLibraryIntegrationTest extends BrowserTestBase {

  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'stark';

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'core_context',
    'field_ui',
    'layout_library',
    'node',
  ];

  /**
   * Data provider for ::test().
   *
   * @return array[]
   *   Sets of arguments to pass to the test method.
   */
  public function provider(): array {
    return [
      'library layouts enabled' => [
        TRUE,
      ],
      'library layouts disabled' => [
        FALSE,
      ],
    ];
  }

  /**
   * Tests that layout entities can be edited with Core Context enabled.
   *
   * @param bool $layout_library_enabled
   *   Whether or not library layouts are enabled for the node type under test.
   *
   * @dataProvider provider
   */
  public function test(bool $layout_library_enabled): void {
    $this->drupalCreateContentType(['type' => 'page']);

    $component = SectionComponent::fromArray([
      'uuid' => $this->container->get('uuid')->generate(),
      'region' => 'content',
      'configuration' => [
        'id' => 'system_powered_by_block',
      ],
      'additional' => [],
      'weight' => 0,
    ]);
    $section = new Section('layout_onecol');
    $section->appendComponent($component);

    $layout = Layout::create([
      'id' => 'test',
      'targetEntityType' => 'node',
      'targetBundle' => 'page',
      'label' => 'Test',
    ]);
    $layout->appendSection($section)->save();

    // We should be able to edit the layout regardless of whether library
    // layouts are enabled for this node type.
    $this->container->get('entity_display.repository')
      ->getViewDisplay('node', 'page')
      ->setThirdPartySetting('layout_library', 'enable', $layout_library_enabled)
      ->save();

    $this->drupalLogin($this->rootUser);
    $this->drupalGet($layout->toUrl());
    $this->assertSession()->statusCodeEquals(200);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc