99acc3712a01d7301a519e70ed7f57c49716823b
[yaffs-website] / web / core / modules / file / tests / src / FunctionalJavascript / FileFieldValidateTest.php
1 <?php
2
3 namespace Drupal\Tests\file\FunctionalJavascript;
4
5 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
6 use Drupal\Tests\file\Functional\FileFieldCreationTrait;
7 use Drupal\Tests\TestFileCreationTrait;
8
9 /**
10  * Tests validation functions such as file type, max file size, max size per
11  * node, and required.
12  *
13  * @group file
14  */
15 class FileFieldValidateTest extends WebDriverTestBase {
16
17   use FileFieldCreationTrait;
18   use TestFileCreationTrait;
19
20   /**
21    * {@inheritdoc}
22    */
23   public static $modules = ['node', 'file'];
24
25   /**
26    * Test the validation message is displayed only once for ajax uploads.
27    */
28   public function testAjaxValidationMessage() {
29     $field_name = strtolower($this->randomMachineName());
30     $this->drupalCreateContentType(['type' => 'article', 'name' => 'Article']);
31     $this->createFileField($field_name, 'node', 'article', [], ['file_extensions' => 'txt']);
32
33     $this->drupalLogin($this->drupalCreateUser([
34       'access content',
35       'create article content',
36     ]));
37
38     $page = $this->getSession()->getPage();
39     $this->drupalGet('node/add/article');
40     $image_file = current($this->getTestFiles('image'));
41     $image_path = $this->container->get('file_system')->realpath($image_file->uri);
42     $page->attachFileToField('files[' . $field_name . '_0]', $image_path);
43     $elements = $page->waitFor(10, function () use ($page) {
44       return $page->findAll('css', '.messages--error');
45     });
46     $this->assertCount(1, $elements, 'Ajax validation messages are displayed once.');
47   }
48
49 }