public function LayoutBuilderStyleTest::testSectionStyles in Layout Builder Styles 8
Test Layout Builder section styles can be created and applied.
File
- tests/
src/ Functional/ LayoutBuilderStyleTest.php, line 56  
Class
- LayoutBuilderStyleTest
 - Tests the Layout Builder Styles apply as expected.
 
Namespace
Drupal\Tests\layout_builder_styles\FunctionalCode
public function testSectionStyles() {
  $assert_session = $this
    ->assertSession();
  $page = $this
    ->getSession()
    ->getPage();
  $section_node = $this
    ->createNode([
    'type' => 'bundle_with_section_field',
    'title' => 'The first node title',
    'body' => [
      [
        'value' => 'The first node body',
      ],
    ],
  ]);
  $this
    ->drupalLogin($this
    ->drupalCreateUser([
    'configure any layout',
    'manage layout builder styles',
    'administer layout builder styles configuration',
  ]));
  // Create styles for section.
  LayoutBuilderStyle::create([
    'id' => 'Foobar',
    'label' => 'Foobar',
    'classes' => 'foo-style-class bar-style-class',
    'type' => 'section',
  ])
    ->save();
  LayoutBuilderStyle::create([
    'id' => 'Foobar2',
    'label' => 'Foobar2',
    'classes' => 'foo2-style-class bar2-style-class',
    'type' => 'section',
  ])
    ->save();
  // Add section to node with new styles.
  $this
    ->drupalGet('node/' . $section_node
    ->id());
  $assert_session
    ->responseNotContains('foo-style-class bar-style-class');
  $assert_session
    ->responseNotContains('foo2-style-class bar2-style-class');
  $page
    ->clickLink('Layout');
  $page
    ->clickLink('Add section');
  $page
    ->clickLink('Two column');
  // Verify that only a single option may be selected.
  $assert_session
    ->elementExists('css', 'select#edit-layout-builder-style option');
  $page
    ->selectFieldOption('edit-layout-builder-style', 'Foobar');
  $page
    ->pressButton('Add section');
  // Confirm section element contains the proper classes.
  $page
    ->pressButton('Save layout');
  $assert_session
    ->responseContains('foo-style-class bar-style-class');
  $assert_session
    ->responseNotContains('foo2-style-class bar2-style-class');
  // Set the configuration to allow multiple styles per block.
  $this
    ->drupalGet('admin/config/content/layout_builder_style/config');
  $page
    ->selectFieldOption('edit-multiselect-multiple', 'multiple');
  $page
    ->selectFieldOption('edit-form-type-multiple-select', 'multiple-select');
  $page
    ->pressButton('Save configuration');
  $this
    ->drupalGet('layout_builder/configure/section/overrides/node.' . $section_node
    ->id() . '/0');
  $page
    ->selectFieldOption('edit-layout-builder-style', 'Foobar', TRUE);
  $page
    ->selectFieldOption('edit-layout-builder-style', 'Foobar2', TRUE);
  $page
    ->pressButton('Update');
  $assert_session
    ->responseContains('foo-style-class bar-style-class');
  $assert_session
    ->responseContains('foo2-style-class bar2-style-class');
}