You are here

public function InsertFileWidgetTest::testMultipleInsertOperations in Insert 8

File

tests/src/FunctionalJavaScript/InsertFileWidgetTest.php, line 64

Class

InsertFileWidgetTest
@group insert

Namespace

Drupal\Tests\insert\FunctionalJavascript

Code

public function testMultipleInsertOperations() {
  $field_name = strtolower($this
    ->randomMachineName());
  $this
    ->createFileField($field_name, 'article');
  $files = $this
    ->drupalGetTestFiles('text');
  $this
    ->drupalGet('node/add/article');
  $page = $this
    ->getSession()
    ->getPage();
  $page
    ->attachFileToField('files[' . $field_name . '_0]', \Drupal::service('file_system')
    ->realpath($files[0]->uri));
  $this
    ->assertSession()
    ->waitForField($field_name . '[0][fids]');
  $body = $page
    ->find('css', '#edit-body-0-value');
  $page
    ->findButton('Insert')
    ->click();
  $this
    ->assertEquals(1, preg_match_all('!<a [^>]+>[^<]+</a>!', $body
    ->getValue()), 'Verified inserted HTML after inserting once: "' . $body
    ->getValue() . '"');
  $page
    ->findButton('Insert')
    ->click();
  $this
    ->assertEquals(2, preg_match_all('!<a [^>]+>[^<]+</a>!', $body
    ->getValue()), 'Verified inserted HTML after inserting twice: "' . $body
    ->getValue() . '"');
  $body
    ->setValue($body
    ->getValue() . 'insert after');

  // Simulate updated caret position:
  $this
    ->getSession()
    ->executeScript("var textarea = jQuery('#edit-body-0-value').get(0); textarea.selectionStart = textarea.selectionEnd = textarea.selectionStart + 'insert after'.length;");
  $page
    ->findButton('Insert')
    ->click();
  $this
    ->assertEquals(1, preg_match('!^<a [^>]+>[^<]+</a><a [^>]+>[^<]+</a>insert after<a [^>]+>[^<]+</a>$!', $body
    ->getValue()), 'Verified HTML after inserting three times: "' . $body
    ->getValue() . '"');
  $body
    ->setValue('insert before');
  $this
    ->getSession()
    ->executeScript("var textarea = jQuery('#edit-body-0-value').get(0); textarea.selectionStart = textarea.selectionEnd = 0;");
  $page
    ->findButton('Insert')
    ->click();
  $this
    ->assertEquals(1, preg_match('!^<a [^>]+>[^<]+</a>insert before$!', $body
    ->getValue()), 'Verified HTML inserted before existing content: "' . $body
    ->getValue() . '"');
}