ImageTestBase.php

Same filename in other branches
  1. 9 core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTestBase.php
  2. 10 core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTestBase.php

Namespace

Drupal\Tests\ckeditor5\FunctionalJavascript

File

core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTestBase.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\ckeditor5\FunctionalJavascript;

use Drupal\Tests\TestFileCreationTrait;
use Drupal\Tests\ckeditor5\Traits\CKEditor5TestTrait;
// cspell:ignore imageresize

/**
 * @coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image
 * @group ckeditor5
 * @internal
 */
abstract class ImageTestBase extends CKEditor5TestBase {
    use CKEditor5TestTrait;
    use TestFileCreationTrait;
    
    /**
     * The user to use during testing.
     *
     * @var \Drupal\user\UserInterface
     */
    protected $adminUser;
    
    /**
     * A host entity with a body field to embed images in.
     *
     * @var \Drupal\node\NodeInterface
     */
    protected $host;
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'ckeditor5',
        'node',
        'text',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * Provides the relevant image attributes.
     *
     * @return string[]
     */
    protected function imageAttributes() {
        return [
            'src' => base_path() . 'core/misc/druplicon.png',
            'width' => '88',
            'height' => '100',
        ];
    }
    
    /**
     * Helper to format attributes.
     *
     * @param bool $reverse
     *   Reverse attributes when printing them.
     *
     * @return string
     */
    protected function imageAttributesAsString($reverse = FALSE) {
        $string = [];
        foreach ($this->imageAttributes() as $key => $value) {
            $string[] = $key . '="' . $value . '"';
        }
        if ($reverse) {
            $string = array_reverse($string);
        }
        return implode(' ', $string);
    }
    
    /**
     * Add an image to the CKEditor 5 editable zone.
     */
    protected function addImage() {
        $page = $this->getSession()
            ->getPage();
        $src = $this->imageAttributes()['src'];
        $this->waitForEditor();
        $this->pressEditorButton('Insert image via URL');
        $dialog = $page->find('css', '.ck-dialog');
        $src_input = $dialog->find('css', '.ck-image-insert-url input[type=text]');
        $src_input->setValue($src);
        $dialog->find('xpath', "//button[span[text()='Accept']]")
            ->click();
        // Wait for the image to be uploaded and rendered by CKEditor 5.
        $this->assertNotEmpty($this->assertSession()
            ->waitForElementVisible('css', '.ck-widget.image > img[src="' . $src . '"]'));
    }

}

Classes

Title Deprecated Summary
ImageTestBase @coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image @group ckeditor5 @internal

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.