function MediaPreviewTest::testEmbedPreviewAccess

Same name and namespace in other branches
  1. 10 core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaPreviewTest.php \Drupal\Tests\ckeditor5\FunctionalJavascript\MediaPreviewTest::testEmbedPreviewAccess()

Tests preview route access.

@dataProvider previewAccessProvider

Parameters

bool $media_embed_enabled: Whether to test with media_embed filter enabled on the text format.

bool $can_use_format: Whether the logged in user is allowed to use the text format.

File

core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaPreviewTest.php, line 147

Class

MediaPreviewTest
@coversDefaultClass <a href="/api/drupal/core%21modules%21ckeditor5%21src%21Plugin%21CKEditor5Plugin%21Media.php/class/Media/11.x" title="CKEditor 5 Media plugin." class="local">\Drupal\ckeditor5\Plugin\CKEditor5Plugin\Media</a> @group ckeditor5 @group #slow @internal

Namespace

Drupal\Tests\ckeditor5\FunctionalJavascript

Code

public function testEmbedPreviewAccess($media_embed_enabled, $can_use_format) : void {
    // Reconfigure the host entity's text format to suit our needs.
    
    /** @var \Drupal\filter\FilterFormatInterface $format */
    $format = FilterFormat::load($this->host->body->format);
    $format->set('filters', [
        'filter_align' => [
            'status' => TRUE,
        ],
        'filter_caption' => [
            'status' => TRUE,
        ],
        'media_embed' => [
            'status' => $media_embed_enabled,
        ],
    ]);
    $format->save();
    $permissions = [
        'bypass node access',
    ];
    if ($can_use_format) {
        $permissions[] = $format->getPermissionName();
    }
    $this->drupalLogin($this->drupalCreateUser($permissions));
    $this->drupalGet($this->host
        ->toUrl('edit-form'));
    $assert_session = $this->assertSession();
    if ($can_use_format) {
        $this->waitForEditor();
        if ($media_embed_enabled) {
            // The preview rendering, which in this test will use Starterkit theme's
            // media.html.twig template, will fail without the CSRF token/header.
            // @see ::testEmbeddedMediaPreviewWithCsrfToken()
            $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'article.media'));
        }
        else {
            // If the filter isn't enabled, there won't be an error, but the
            // preview shouldn't be rendered.
            $assert_session->elementNotExists('css', 'article.media');
        }
    }
    else {
        $assert_session->pageTextContains('This field has been disabled because you do not have sufficient permissions to edit it.');
    }
}

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