function FileManagedFileElementTest::testManagedFile
Same name in this branch
- 8.9.x core/modules/file/tests/src/Functional/FileManagedFileElementTest.php \Drupal\Tests\file\Functional\FileManagedFileElementTest::testManagedFile()
Same name in other branches
- 9 core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php \Drupal\Tests\file\FunctionalJavascript\FileManagedFileElementTest::testManagedFile()
- 9 core/modules/file/tests/src/Functional/FileManagedFileElementTest.php \Drupal\Tests\file\Functional\FileManagedFileElementTest::testManagedFile()
- 10 core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php \Drupal\Tests\file\FunctionalJavascript\FileManagedFileElementTest::testManagedFile()
- 10 core/modules/file/tests/src/Functional/FileManagedFileElementTest.php \Drupal\Tests\file\Functional\FileManagedFileElementTest::testManagedFile()
- 11.x core/modules/file/tests/src/FunctionalJavascript/FileManagedFileElementTest.php \Drupal\Tests\file\FunctionalJavascript\FileManagedFileElementTest::testManagedFile()
- 11.x core/modules/file/tests/src/Functional/FileManagedFileElementTest.php \Drupal\Tests\file\Functional\FileManagedFileElementTest::testManagedFile()
Tests the managed_file element type.
File
-
core/
modules/ file/ tests/ src/ FunctionalJavascript/ FileManagedFileElementTest.php, line 55
Class
- FileManagedFileElementTest
- Tests the 'managed_file' element type.
Namespace
Drupal\Tests\file\FunctionalJavascriptCode
public function testManagedFile() {
// 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->drupalPostForm(NULL, [], t('Save'));
// Remove, then Submit.
$remove_button_title = $multiple ? t('Remove selected') : t('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->drupalPostForm(NULL, [], t('Save'));
$this->assertSession()
->responseContains(t('The file ids are %fids.', [
'%fids' => '',
]));
// 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->drupalPostForm(NULL, [], t('Save'));
$this->assertSession()
->responseContains(t('The file ids are %fids.', [
'%fids' => '',
]));
}
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.