protected function FileFieldAnonymousSubmissionTest::doTestNodeWithFileWithoutTitle in Drupal 10
Same name and namespace in other branches
- 8 core/modules/file/tests/src/Functional/FileFieldAnonymousSubmissionTest.php \Drupal\Tests\file\Functional\FileFieldAnonymousSubmissionTest::doTestNodeWithFileWithoutTitle()
- 9 core/modules/file/tests/src/Functional/FileFieldAnonymousSubmissionTest.php \Drupal\Tests\file\Functional\FileFieldAnonymousSubmissionTest::doTestNodeWithFileWithoutTitle()
Helper method to test file submissions with missing node titles.
File
- core/
modules/ file/ tests/ src/ Functional/ FileFieldAnonymousSubmissionTest.php, line 122
Class
- FileFieldAnonymousSubmissionTest
- Confirm that file field submissions work correctly for anonymous visitors.
Namespace
Drupal\Tests\file\FunctionalCode
protected function doTestNodeWithFileWithoutTitle() {
$type = 'Article';
$title = 'Test page';
$this
->createFileField('field_image', 'node', 'article', [], [
'file_extensions' => 'txt png',
]);
// Load the node form.
$this
->drupalGet('node/add/article');
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->pageTextContains("Create {$type}");
// Generate an image file.
$image = $this
->getTestFile('image');
// Submit the form but exclude the title field.
$edit = [
'body[0][value]' => 'Test article',
'files[field_image_0]' => $this->container
->get('file_system')
->realpath($image
->getFileUri()),
];
if (!$this->loggedInUser) {
$label = 'Save';
}
else {
$label = 'Save';
}
$this
->submitForm($edit, $label);
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->pageTextNotContains("{$type} {$title} has been created.");
$this
->assertSession()
->pageTextContains('Title field is required.');
// Submit the form again but this time with the missing title field. This
// should still work.
$edit = [
'title[0][value]' => $title,
];
$this
->submitForm($edit, $label);
// Confirm the final submission actually worked.
$this
->assertSession()
->pageTextContains("{$type} {$title} has been created.");
$matches = [];
if (preg_match('@node/(\\d+)$@', $this
->getUrl(), $matches)) {
$nid = end($matches);
$this
->assertNotEquals(0, $nid, 'The node ID was extracted from the URL.');
$node = Node::load($nid);
$this
->assertNotNull($node, 'The node was loaded successfully.');
$this
->assertFileExists(File::load($node->field_image->target_id)
->getFileUri());
}
}