FileManagedFileElementTest.php
Same filename in this branch
Same filename in other branches
- 9 core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php
- 9 core/modules/file/tests/src/Functional/FileManagedFileElementTest.php
- 8.9.x core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php
- 8.9.x core/modules/file/tests/src/Functional/FileManagedFileElementTest.php
- 11.x core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php
- 11.x core/modules/file/tests/src/Functional/FileManagedFileElementTest.php
Namespace
Drupal\Tests\file\FunctionalJavascriptFile
-
core/
modules/ file/ tests/ src/ FunctionalJavascript/ FileManagedFileElementTest.php
View source
<?php
declare (strict_types=1);
namespace Drupal\Tests\file\FunctionalJavascript;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
/**
* Tests the 'managed_file' element type.
*
* @group file
*/
class FileManagedFileElementTest extends WebDriverTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'node',
'file',
'file_module_test',
'field_ui',
];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* A user with administration permissions.
*
* @var \Drupal\user\UserInterface
*/
protected $adminUser;
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->adminUser = $this->drupalCreateUser([
'access content',
'access administration pages',
'administer site configuration',
'administer users',
'administer permissions',
'administer content types',
'administer node fields',
'administer node display',
'administer nodes',
'bypass node access',
]);
$this->drupalLogin($this->adminUser);
$this->drupalCreateContentType([
'type' => 'article',
'name' => 'Article',
]);
}
/**
* Tests the managed_file element type.
*/
public function testManagedFile() : void {
// Perform the tests with all permutations of $form['#tree'],
// $element['#extended'], and $element['#multiple'].
$filename = \Drupal::service('file_system')->tempnam('temporary://', "testManagedFile") . '.txt';
file_put_contents($filename, $this->randomString(128));
foreach ([
0,
1,
] as $tree) {
foreach ([
0,
1,
] as $extended) {
foreach ([
0,
1,
] as $multiple) {
$path = 'file/test/' . $tree . '/' . $extended . '/' . $multiple;
$input_base_name = $tree ? 'nested_file' : 'file';
$file_field_name = $multiple ? 'files[' . $input_base_name . '][]' : 'files[' . $input_base_name . ']';
// Now, test the Upload and Remove buttons, with Ajax.
// Upload, then Submit.
$last_fid_prior = $this->getLastFileId();
$this->drupalGet($path);
$this->getSession()
->getPage()
->attachFileToField($file_field_name, $this->container
->get('file_system')
->realpath($filename));
$uploaded_file = $this->assertSession()
->waitForElement('css', '.file--mime-text-plain');
$this->assertNotEmpty($uploaded_file);
$last_fid = $this->getLastFileId();
$this->assertGreaterThan($last_fid_prior, $last_fid, 'New file got uploaded.');
$this->submitForm([], 'Save');
// Remove, then Submit.
$remove_button_title = $multiple ? 'Remove selected' : 'Remove';
$this->drupalGet($path . '/' . $last_fid);
if ($multiple) {
$selected_checkbox = ($tree ? 'nested[file]' : 'file') . '[file_' . $last_fid . '][selected]';
$this->getSession()
->getPage()
->checkField($selected_checkbox);
}
$this->getSession()
->getPage()
->pressButton($remove_button_title);
$this->assertSession()
->assertWaitOnAjaxRequest();
$this->submitForm([], 'Save');
$this->assertSession()
->pageTextContains('The file ids are .');
// Upload, then Remove, then Submit.
$this->drupalGet($path);
$this->getSession()
->getPage()
->attachFileToField($file_field_name, $this->container
->get('file_system')
->realpath($filename));
$uploaded_file = $this->assertSession()
->waitForElement('css', '.file--mime-text-plain');
$this->assertNotEmpty($uploaded_file);
if ($multiple) {
$selected_checkbox = ($tree ? 'nested[file]' : 'file') . '[file_' . $this->getLastFileId() . '][selected]';
$this->getSession()
->getPage()
->checkField($selected_checkbox);
}
$this->getSession()
->getPage()
->pressButton($remove_button_title);
$this->assertSession()
->assertWaitOnAjaxRequest();
$this->submitForm([], 'Save');
$this->assertSession()
->pageTextContains('The file ids are .');
}
}
}
}
/**
* Retrieves the fid of the last inserted file.
*/
protected function getLastFileId() {
return (int) \Drupal::entityQueryAggregate('file')->accessCheck(FALSE)
->aggregate('fid', 'max')
->execute()[0]['fid_max'];
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
FileManagedFileElementTest | Tests the 'managed_file' element type. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.