You are here

protected function FileFieldAnonymousSubmissionTest::doTestNodeWithFileWithoutTitle in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/file/tests/src/Functional/FileFieldAnonymousSubmissionTest.php \Drupal\Tests\file\Functional\FileFieldAnonymousSubmissionTest::doTestNodeWithFileWithoutTitle()
  2. 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\Functional

Code

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());
  }
}