Commit c4c85060 authored by Julian Pustkuchen's avatar Julian Pustkuchen Committed by Joshua Sedler
Browse files

Issue #3069731: 3.x settings form doesn't work in layout builder

parent e1bf3099
Loading
Loading
Loading
Loading
+35 −31
Original line number Diff line number Diff line
@@ -155,45 +155,49 @@ class ReadMoreExtraFieldFunctionalJavascriptTest extends WebDriverTestBase {

  /**
   * Tests to see if the field behaves correctly inside layout builder.
   *
   * @todo Finish this test and change values.
   */
  public function todoTestFieldInLayoutBuilder() {
  public function testFieldInLayoutBuilder() {
    $session = $this->assertSession();
    $page = $this->getSession()->getPage();
    $driver = $this->getSession()->getDriver();
    /** @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface $display_repository */
    $display_repository = \Drupal::service('entity_display.repository');
    $display_repository->getViewDisplay('node', 'article')
      ->setComponent('extra_field_readmore_extrafield', [
        'type' => 'extra_field_readmore_extrafield',
        'settings' => [
          'link_title' => 'Link Title Test',
          'link_classes' => 'test-link-class',
          'link_attr_title' => 'Link Attr Title',
          'link_attr_rel' => 'alternate',
          'link_attr_target' => '_self',
        ],
      ])
      ->enable()
      ->save();
    // Set the field inside layout builder:

    // Enable Layout Builder:
    $this->drupalGet('/admin/structure/types/manage/article/display');
    $page->checkField('edit-layout-enabled');
    $page->pressButton('edit-submit');
    $this->drupalGet('/admin/structure/types/manage/article/display/default/layout');
    $session->pageTextContainsOnce('Placeholder for the "Read more" field');
    $page->pressButton('Add block');
    $session->waitForElementVisible('css', 'div#drupal-off-canvas');
    $page->pressButton('Read more');
    $session->waitForElementVisible('css', 'div[id*="edit-settings-admin-label"]');
    $session->elementExists('css', 'input[id*="edit-settings-label"]');
    // @todo Check if other settings exist (link_to_entity and wrapper).
    // @todo Set settings and label.
    $page->pressButton('Add block');

    $this->drupalGet('/layout_builder/choose/block/defaults/node.article.default/0/content');
    $session->pageTextContains('Read more');
    $this->drupalGet('/layout_builder/add/block/defaults/node.article.default/0/content/extra_field_block%3Anode%3Aarticle%3Aextra_field_readmore_extrafield');

    // Test readmore_extrafield settings exist in Layout Builder:
    $session->elementExists('css', '#edit-settings-label');
    $session->elementExists('css', '#edit-settings-third-party-settings-extra-field-plus-settings-link-title');
    $session->elementExists('css', '#edit-settings-third-party-settings-extra-field-plus-settings-link-classes');
    $session->elementExists('css', '#edit-settings-third-party-settings-extra-field-plus-settings-link-attr-title');
    $session->elementExists('css', '#edit-settings-third-party-settings-extra-field-plus-settings-link-attr-rel');
    $session->elementExists('css', '#edit-settings-third-party-settings-extra-field-plus-settings-link-attr-target');

    // Fill these settings:
    $page->fillField('edit-settings-label', 'Test-Label');
    $page->fillField('edit-settings-third-party-settings-extra-field-plus-settings-link-title', 'Link Title Test Overwritten');
    $page->fillField('edit-settings-third-party-settings-extra-field-plus-settings-link-classes', 'test-link-class-overwritten');
    $page->fillField('edit-settings-third-party-settings-extra-field-plus-settings-link-attr-title', 'Link Attr Title Overwritten');
    $page->fillField('edit-settings-third-party-settings-extra-field-plus-settings-link-attr-rel', 'author');
    $page->fillField('edit-settings-third-party-settings-extra-field-plus-settings-link-attr-target', '_top');
    // Save field:
    $page->pressButton('edit-actions-submit');
    // Save layout:
    $page->pressButton('edit-submit');

    // Go to node:
    $this->drupalGet('/node/' . $this->node->id());
    $session->elementTextEquals('css', 'body > div > div > main > div > div > article > div > p', 'VerySpecificTestTitle (from extra_field_plus example)');
    // Check all settings are set on the Link:
    $session->elementExists('css', 'a.test-link-class-overwritten.readmore-extrafield-link');
    $session->elementExists('css', 'div.readmore-extrafield > a.test-link-class-overwritten.readmore-extrafield-link');
    $session->elementTextEquals('css', 'a.test-link-class-overwritten.readmore-extrafield-link', 'Link Title Test Overwritten');
    $session->elementAttributeContains('css', 'a.test-link-class-overwritten.readmore-extrafield-link', 'title', 'Link Attr Title Overwritten');
    $session->elementAttributeContains('css', 'a.test-link-class-overwritten.readmore-extrafield-link', 'rel', 'author');
    $session->elementAttributeContains('css', 'a.test-link-class-overwritten.readmore-extrafield-link', 'target', '_top');
  }

}