Version 1
[yaffs-website] / web / modules / contrib / video_embed_field / modules / video_embed_wysiwyg / tests / src / Functional / TextFormatConfigurationTest.php
diff --git a/web/modules/contrib/video_embed_field/modules/video_embed_wysiwyg/tests/src/Functional/TextFormatConfigurationTest.php b/web/modules/contrib/video_embed_field/modules/video_embed_wysiwyg/tests/src/Functional/TextFormatConfigurationTest.php
new file mode 100644 (file)
index 0000000..3f565f2
--- /dev/null
@@ -0,0 +1,167 @@
+<?php
+
+namespace Drupal\Tests\video_embed_wysiwyg\Functional;
+
+use Drupal\Tests\BrowserTestBase;
+use Drupal\Tests\video_embed_field\Functional\AdminUserTrait;
+
+/**
+ * Test the format configuration form.
+ *
+ * @group video_embed_wysiwyg
+ */
+class TextFormatConfigurationTest extends BrowserTestBase {
+
+  use AdminUserTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = [
+    'video_embed_field',
+    'video_embed_wysiwyg',
+    'editor',
+    'ckeditor',
+    'field_ui',
+    'node',
+    'image',
+  ];
+
+  /**
+   * The URL for the filter format.
+   *
+   * @var string
+   */
+  protected $formatUrl = 'admin/config/content/formats/manage/plain_text';
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->drupalLogin($this->createAdminUser());
+    $this->drupalGet($this->formatUrl);
+
+    // Setup the filter to have an editor.
+    $this->getSession()->getPage()->find('css', '[name="editor[editor]"]')->setValue('ckeditor');
+    $this->getSession()->getPage()->find('css', 'input[name="editor_configure"]')->click();
+    $this->submitForm([], t('Save configuration'));
+  }
+
+  /**
+   * Test both the input filter and button need to be enabled together.
+   */
+  public function testFormatConfiguration() {
+    // Save the settings with the filter enabled, but with no button.
+    $this->drupalGet($this->formatUrl);
+    $this->submitForm([
+      'filters[video_embed_wysiwyg][status]' => TRUE,
+      'editor[settings][toolbar][button_groups]' => '[]',
+    ], t('Save configuration'));
+    $this->assertSession()->pageTextContains('To embed videos, make sure you have enabled the "Video Embed WYSIWYG" filter and dragged the video icon into the WYSIWYG toolbar.');
+
+    $this->drupalGet($this->formatUrl);
+    $this->submitForm([
+      'filters[video_embed_wysiwyg][status]' => FALSE,
+      'editor[settings][toolbar][button_groups]' => '[[{"name":"Group","items":["video_embed"]}]]',
+    ], t('Save configuration'));
+    $this->assertSession()->pageTextContains('To embed videos, make sure you have enabled the "Video Embed WYSIWYG" filter and dragged the video icon into the WYSIWYG toolbar.');
+
+    $this->drupalGet($this->formatUrl);
+    $this->submitForm([
+      'filters[video_embed_wysiwyg][status]' => TRUE,
+      'editor[settings][toolbar][button_groups]' => '[[{"name":"Group","items":["video_embed"]}]]',
+    ], t('Save configuration'));
+    $this->assertSession()->pageTextContains('The text format Plain text has been updated.');
+
+    // Test the messages aren't triggered if they are in the second row.
+    $this->drupalGet($this->formatUrl);
+    $this->submitForm([
+      'filters[video_embed_wysiwyg][status]' => TRUE,
+      'editor[settings][toolbar][button_groups]' => '[[{"name":"Foo","items":["NumberedList"]}],[{"name":"Bar","items":["video_embed"]}]]',
+    ], t('Save configuration'));
+    $this->assertSession()->pageTextContains('The text format Plain text has been updated.');
+  }
+
+  /**
+   * Test the URL filter weight is in the correct order.
+   */
+  public function testUrlWeightOrder() {
+    $this->drupalGet($this->formatUrl);
+    $this->submitForm([
+      // Enable the URL filter and the WYSIWYG embed.
+      'filters[filter_url][status]' => TRUE,
+      'filters[filter_html][status]' => FALSE,
+      'filters[video_embed_wysiwyg][status]' => TRUE,
+      'editor[settings][toolbar][button_groups]' => '[[{"name":"Group","items":["video_embed"]}]]',
+      // Setup the weights so the URL filter runs first.
+      'filters[video_embed_wysiwyg][weight]' => '10',
+      'filters[filter_url][weight]' => '-10',
+    ], 'Save configuration');
+    $this->assertSession()->pageTextContains('The "Video Embed WYSIWYG" filter must run before the "Convert URLs into links" filter to function correctly.');
+
+    // Submit the form with the weights reversed.
+    $this->submitForm([
+      'filters[video_embed_wysiwyg][weight]' => '-10',
+      'filters[filter_url][weight]' => '10',
+    ], 'Save configuration');
+    $this->assertSession()->pageTextContains('The text format Plain text has been updated.');
+  }
+
+  /**
+   * Test the URL filter weight is in the correct order.
+   */
+  public function testHtmlFilterWeightOrder() {
+    $this->drupalGet($this->formatUrl);
+    $this->submitForm([
+      // Enable the URL filter and the WYSIWYG embed.
+      'filters[filter_html][status]' => TRUE,
+      'filters[filter_url][status]' => FALSE,
+      'filters[video_embed_wysiwyg][status]' => TRUE,
+      'editor[settings][toolbar][button_groups]' => '[[{"name":"Group","items":["video_embed"]}]]',
+      // Run WYSWIYG first then the HTML filter.
+      'filters[video_embed_wysiwyg][weight]' => '-10',
+      'filters[filter_html][weight]' => '10',
+    ], 'Save configuration');
+    $this->assertSession()->pageTextContains('The "Video Embed WYSIWYG" filter must run after the "Limit allowed HTML tags" filter to function correctly.');
+
+    // Submit the form with the weights reversed.
+    $this->submitForm([
+      'filters[video_embed_wysiwyg][weight]' => '10',
+      'filters[filter_html][weight]' => '-10',
+    ], 'Save configuration');
+    $this->assertSession()->pageTextContains('The text format Plain text has been updated.');
+  }
+
+  /**
+   * Test the dialog defaults can be set and work correctly.
+   */
+  public function testDialogDefaultValues() {
+    $this->drupalGet($this->formatUrl);
+
+    // Assert all the form fields that appear on the modal, appear as
+    // configurable defaults.
+    $this->assertSession()->pageTextContains('Autoplay');
+    $this->assertSession()->pageTextContains('Responsive Video');
+    $this->assertSession()->pageTextContains('Width');
+    $this->assertSession()->pageTextContains('Height');
+
+    $this->submitForm([
+      'filters[video_embed_wysiwyg][status]' => TRUE,
+      'editor[settings][toolbar][button_groups]' => '[[{"name":"Group","items":["video_embed"]}]]',
+      'editor[settings][plugins][video_embed][defaults][children][width]' => '123',
+      'editor[settings][plugins][video_embed][defaults][children][height]' => '456',
+      'editor[settings][plugins][video_embed][defaults][children][responsive]' => FALSE,
+      'editor[settings][plugins][video_embed][defaults][children][autoplay]' => FALSE,
+    ], t('Save configuration'));
+
+    // Ensure the configured defaults show up on the modal window.
+    $this->drupalGet('video-embed-wysiwyg/dialog/plain_text');
+    $this->assertSession()->fieldValueEquals('width', '123');
+    $this->assertSession()->fieldValueEquals('height', '456');
+    $this->assertSession()->fieldValueEquals('autoplay', FALSE);
+    $this->assertSession()->fieldValueEquals('responsive', FALSE);
+  }
+
+}