You are here

class FieldTest in Drupal 10

Same name in this branch
  1. 10 core/modules/quickedit/tests/src/FunctionalJavascript/FieldTest.php \Drupal\Tests\quickedit\FunctionalJavascript\FieldTest
  2. 10 core/modules/views/tests/src/Unit/Plugin/field/FieldTest.php \Drupal\Tests\views\Unit\Plugin\field\FieldTest
  3. 10 core/modules/views/tests/src/FunctionalJavascript/Plugin/views/Handler/FieldTest.php \Drupal\Tests\views\FunctionalJavascript\Plugin\views\Handler\FieldTest
  4. 10 core/modules/views/tests/modules/views_test_data/src/Plugin/views/field/FieldTest.php \Drupal\views_test_data\Plugin\views\field\FieldTest
  5. 10 core/modules/field/tests/src/Kernel/Plugin/migrate/source/d6/FieldTest.php \Drupal\Tests\field\Kernel\Plugin\migrate\source\d6\FieldTest
  6. 10 core/modules/field/tests/src/Kernel/Plugin/migrate/source/d7/FieldTest.php \Drupal\Tests\field\Kernel\Plugin\migrate\source\d7\FieldTest
Same name and namespace in other branches
  1. 8 core/modules/quickedit/tests/src/FunctionalJavascript/FieldTest.php \Drupal\Tests\quickedit\FunctionalJavascript\FieldTest
  2. 9 core/modules/quickedit/tests/src/FunctionalJavascript/FieldTest.php \Drupal\Tests\quickedit\FunctionalJavascript\FieldTest

Tests quickedit.

@group quickedit

Hierarchy

Expanded class hierarchy of FieldTest

File

core/modules/quickedit/tests/src/FunctionalJavascript/FieldTest.php, line 17

Namespace

Drupal\Tests\quickedit\FunctionalJavascript
View source
class FieldTest extends WebDriverTestBase {
  use ContextualLinkClickTrait;

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'node',
    'ckeditor',
    'contextual',
    'quickedit',
  ];

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

  /**
   * {@inheritdoc}
   */
  protected function setUp() : void {
    parent::setUp();

    // Create a text format and associate CKEditor.
    $filtered_html_format = FilterFormat::create([
      'format' => 'filtered_html',
      'name' => 'Filtered HTML',
      'weight' => 0,
    ]);
    $filtered_html_format
      ->save();
    Editor::create([
      'format' => 'filtered_html',
      'editor' => 'ckeditor',
    ])
      ->save();

    // Create note type with body field.
    $node_type = NodeType::create([
      'type' => 'page',
      'name' => 'Page',
    ]);
    $node_type
      ->save();
    node_add_body_field($node_type);
    $account = $this
      ->drupalCreateUser([
      'access content',
      'administer nodes',
      'edit any page content',
      'use text format filtered_html',
      'access contextual links',
      'access in-place editing',
    ]);
    $this
      ->drupalLogin($account);
  }

  /**
   * Tests that quickeditor works correctly for field with CKEditor.
   */
  public function testFieldWithCkeditor() {
    $body_value = '<p>Dare to be wise</p>';
    $node = Node::create([
      'type' => 'page',
      'title' => 'Page node',
      'body' => [
        [
          'value' => $body_value,
          'format' => 'filtered_html',
        ],
      ],
    ]);
    $node
      ->save();
    $page = $this
      ->getSession()
      ->getPage();
    $assert = $this
      ->assertSession();
    $this
      ->drupalGet('node/' . $node
      ->id());

    // Wait "Quick edit" button for node.
    $this
      ->assertSession()
      ->waitForElement('css', '[data-quickedit-entity-id="node/' . $node
      ->id() . '"] .contextual .quickedit');

    // Click by "Quick edit".
    $this
      ->clickContextualLink('[data-quickedit-entity-id="node/' . $node
      ->id() . '"]', 'Quick edit');

    // Switch to body field.
    $page
      ->find('css', '[data-quickedit-field-id="node/' . $node
      ->id() . '/body/en/full"]')
      ->click();

    // Wait and click by "Blockquote" button from editor for body field.
    $this
      ->assertSession()
      ->waitForElementVisible('css', '.cke_button.cke_button__blockquote')
      ->click();

    // Wait and click by "Save" button after body field was changed.
    $this
      ->assertSession()
      ->waitForElementVisible('css', '.quickedit-toolgroup.ops [type="submit"][aria-hidden="false"]')
      ->click();

    // Wait until the save occurs and the editor UI disappears.
    $this
      ->assertSession()
      ->assertNoElementAfterWait('css', '.cke_button.cke_button__blockquote');

    // Ensure that the changes take effect.
    $assert
      ->responseMatches("|<blockquote>\\s*{$body_value}\\s*</blockquote>|");
  }

}

Members