insert-8.x-2.x-dev/tests/src/FunctionalJavaScript/InsertImageCKEditorTest.php

tests/src/FunctionalJavaScript/InsertImageCKEditorTest.php
<?php

namespace Drupal\Tests\insert\FunctionalJavascript;

/**
 * Tests Insert module's functionality on CKEditor instances.
 *
 * @group insert
 */
class InsertImageCKEditorTest extends InsertImageCKEditorTestBase {

  /**
   *
   */
  public function testCaption() {
    $fieldName = strtolower($this->randomMachineName());

    $this->createImageField($fieldName, ['alt_field' => '0', 'title_field' => '1']);
    $this->updateInsertSettings($fieldName, [
      'styles' => [
        'image' => 'image',
      ],
      'default' => 'image',
      'caption' => TRUE,
    ]);

    $images = $this->drupalGetTestFiles('image');

    $this->drupalGet('node/add/article');
    $page = $this->getSession()->getPage();

    $page->attachFileToField(
      'files[' . $fieldName . '_0]',
      \Drupal::service('file_system')->realpath($images[0]->uri)
    );

    $this->assertSession()->waitForField($fieldName . '[0][fids]');

    $titleField = $page->findField($fieldName . '[0][title]');

    $titleField->setValue('some title');
    $page->findButton('Insert')->click();

    $instancesQuery = 'CKEDITOR.instances["edit-body-0-value"].widgets.instances';

    $hasCaption = $this->getSession()->evaluateScript($instancesQuery . '[0].data.hasCaption');
    $this->assertTrue($hasCaption, 'Verified caption being inserted: ' . (string) $hasCaption);

    // For some reason, $titleField->setValue('') empties the whole editor, so
    // resetting title field needs to be simulated using JavaScript.
    $this->getSession()->executeScript('jQuery(\'[name$="[title]"]\').val("").trigger("input")');
    $hasCaption = $this->getSession()->evaluateScript($instancesQuery . '[1].data.hasCaption');
    $this->assertFalse($hasCaption, 'Verified caption being removed when erasing title field: ' . (string) $hasCaption);

    $this->drupalGet('node/add/article');
    $page = $this->getSession()->getPage();

    $page->attachFileToField(
      'files[' . $fieldName . '_0]',
      \Drupal::service('file_system')->realpath($images[0]->uri)
    );

    $this->assertSession()->waitForField($fieldName . '[0][fids]');

    $page->findButton('Insert')->click();
    $hasCaption = $this->getSession()->evaluateScript($instancesQuery . '[0].data.hasCaption');
    $this->assertFalse($hasCaption, 'Verified no caption being inserted when title is empty: ' . (string) $hasCaption);

    $this->getSession()->executeScript('jQuery(\'[name$="[title]"]\').val("some title").trigger("input")');
    $hasCaption = $this->getSession()->evaluateScript($instancesQuery . '[1].data.hasCaption');
    $this->assertTrue($hasCaption, 'Verified caption being inserted on images already placed: ' . (string) $hasCaption);
  }

}

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

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