Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / file / tests / src / FunctionalJavascript / FileFieldValidateTest.php
diff --git a/web/core/modules/file/tests/src/FunctionalJavascript/FileFieldValidateTest.php b/web/core/modules/file/tests/src/FunctionalJavascript/FileFieldValidateTest.php
new file mode 100644 (file)
index 0000000..99acc37
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+
+namespace Drupal\Tests\file\FunctionalJavascript;
+
+use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
+use Drupal\Tests\file\Functional\FileFieldCreationTrait;
+use Drupal\Tests\TestFileCreationTrait;
+
+/**
+ * Tests validation functions such as file type, max file size, max size per
+ * node, and required.
+ *
+ * @group file
+ */
+class FileFieldValidateTest extends WebDriverTestBase {
+
+  use FileFieldCreationTrait;
+  use TestFileCreationTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['node', 'file'];
+
+  /**
+   * Test the validation message is displayed only once for ajax uploads.
+   */
+  public function testAjaxValidationMessage() {
+    $field_name = strtolower($this->randomMachineName());
+    $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']);
+    $this->createFileField($field_name, 'node', 'article', [], ['file_extensions' => 'txt']);
+
+    $this->drupalLogin($this->drupalCreateUser([
+      'access content',
+      'create article content',
+    ]));
+
+    $page = $this->getSession()->getPage();
+    $this->drupalGet('node/add/article');
+    $image_file = current($this->getTestFiles('image'));
+    $image_path = $this->container->get('file_system')->realpath($image_file->uri);
+    $page->attachFileToField('files[' . $field_name . '_0]', $image_path);
+    $elements = $page->waitFor(10, function () use ($page) {
+      return $page->findAll('css', '.messages--error');
+    });
+    $this->assertCount(1, $elements, 'Ajax validation messages are displayed once.');
+  }
+
+}