You are here

EmbedButtonTest.php in D7 Media 8

File

tests/src/FunctionalJavascript/EmbedButtonTest.php
View source
<?php

namespace Drupal\Tests\media\FunctionalJavascript;

use Drupal\FunctionalJavascriptTests\JavascriptTestBase;

/**
 * Ensures that embedding functionality works perfectly.
 *
 * @group media
 */
class EmbedButtonTest extends JavascriptTestBase {

  /**
   * {@inheritdoc}
   */
  public static $modules = [
    'node',
    'path',
    'text',
  ];

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

    // Manually installing modules to preserve the order.
    $this
      ->installModule('media_embed_test');
    $this
      ->installModule('media');
    $adminUser = $this
      ->drupalCreateUser([
      'access content',
      'use text format basic_html',
      'use text format full_html',
      'access media_embed entity browser pages',
      'view media',
      'create media',
      'update media',
      'update any media',
      'delete media',
      'delete any media',
      'access media overview',
      'create page content',
      'edit any page content',
    ]);
    $this
      ->drupalLogin($adminUser);
  }

  /**
   * Tests that the entity embed dialog is working.
   */
  public function testMediaEmbedDialog() {

    // Find the button and click it to see if the modal opens.
    $this
      ->drupalGet('node/add/page');
    $this
      ->find('.cke_button__media')
      ->click();
    $this
      ->wait();
    $this
      ->assertSession()
      ->pageTextContains('Select media to embed');

    // Test for the button in the basic_html editor.
    $this
      ->drupalGet('entity-embed/dialog/basic_html/media');
    $this
      ->assertEquals(200, $this
      ->getSession()
      ->getStatusCode());
    $this
      ->assertSession()
      ->pageTextContains('Select media to embed');

    // Test for the button in the full_html editor.
    $this
      ->drupalGet('entity-embed/dialog/full_html/media');
    $this
      ->assertEquals(200, $this
      ->getSession()
      ->getStatusCode());
    $this
      ->assertSession()
      ->pageTextContains('Select media to embed');
    $this
      ->drupalGet('entity-browser/iframe/media_embed');
    $this
      ->assertEquals(200, $this
      ->getSession()
      ->getStatusCode());
    $filter = $this
      ->getSession()
      ->getPage()
      ->find('css', 'input[name="name"]');
    $this
      ->assertTrue($filter, "Found filter");
  }

  /**
   * Installs the module using module_handler service.
   *
   * @param string $module_name
   *   Name of the module to install.
   */
  public function installModule($module_name) {
    if (!$this->container
      ->get('module_handler')
      ->moduleExists($module_name)) {
      $this->container
        ->get('module_installer')
        ->install(array(
        $module_name,
      ));
    }
  }

  /**
   * Wait for AJAX.
   */
  protected function wait() {
    $this
      ->getSession()
      ->wait(20000, '(0 === jQuery.active)');
  }

  /**
   * Find an element based on a CSS selector.
   *
   * @param string $css_selector
   *   A css selector to find an element for.
   *
   * @return \Behat\Mink\Element\NodeElement|null
   *   The found element or null.
   */
  protected function find($css_selector) {
    return $this
      ->getSession()
      ->getPage()
      ->find('css', $css_selector);
  }

}

Classes

Namesort descending Description
EmbedButtonTest Ensures that embedding functionality works perfectly.