You are here

public function WebformSubmissionTest::testWebformSubmission in Webform 8.5

Same name and namespace in other branches
  1. 6.x tests/src/Functional/WebformSubmissionTest.php \Drupal\Tests\webform\Functional\WebformSubmissionTest::testWebformSubmission()

Tests webform submission entity.

File

tests/src/Functional/WebformSubmissionTest.php, line 32

Class

WebformSubmissionTest
Tests for webform submission entity.

Namespace

Drupal\Tests\webform\Functional

Code

public function testWebformSubmission() {
  $normal_user = $this
    ->drupalCreateUser();

  /** @var \Drupal\webform\WebformInterface $webform */
  $webform = Webform::load('test_submissions');

  /** @var \Drupal\webform\WebformSubmissionInterface[] $submissions */
  $submissions = array_values(\Drupal::entityTypeManager()
    ->getStorage('webform_submission')
    ->loadByProperties([
    'webform_id' => 'test_submissions',
  ]));

  /** @var \Drupal\webform\WebformSubmissionInterface $webform_submission */
  $webform_submission = reset($submissions);

  /**************************************************************************/

  // Check create submission.
  $this
    ->assertInstanceOf(WebformSubmission::class, $webform_submission);

  // Check get webform.
  $this
    ->assertEqual($webform_submission
    ->getWebform()
    ->id(), $webform
    ->id());

  // Check that source entity is NULL.
  $this
    ->assertNull($webform_submission
    ->getSourceEntity());

  // Check getting source URL without uri, which will still return
  // the webform.
  $webform_submission
    ->set('uri', NULL)
    ->save();
  $this
    ->assertEqual($webform_submission
    ->getSourceUrl()
    ->toString(), $webform
    ->toUrl('canonical', [
    'absolute' => TRUE,
  ])
    ->toString());

  // Check get source URL set to user 1.
  $webform_submission
    ->set('entity_type', 'user')
    ->set('entity_id', $normal_user
    ->id())
    ->save();
  $this
    ->assertEqual($webform_submission
    ->getSourceUrl()
    ->toString(), $normal_user
    ->toUrl('canonical', [
    'absolute' => TRUE,
  ])
    ->toString());

  // Check missing webform_id exception.
  try {
    WebformSubmission::create();
    $this
      ->fail('Webform id (webform_id) is required to create a webform submission.');
  } catch (\Exception $exception) {
    $this
      ->pass('Webform id (webform_id) is required to create a webform submission.');
  }

  // Check creating a submission with default data.
  $webform_submission = WebformSubmission::create([
    'webform_id' => $webform
      ->id(),
    'data' => [
      'custom' => 'value',
    ],
  ]);
  $this
    ->assertEqual($webform_submission
    ->getData(), [
    'custom' => 'value',
  ]);

  // Check submission label.
  $webform_submission
    ->save();
  $this
    ->assertEqual($webform_submission
    ->label(), $webform
    ->label() . ': Submission #' . $webform_submission
    ->serial());

  // Check test submission URI.
  // @see \Drupal\webform\WebformSubmissionForm::save
  $this
    ->drupalLogin($this->rootUser);
  $sid = $this
    ->postSubmissionTest($webform);
  $webform_submission = WebformSubmission::load($sid);
  $this
    ->assertEqual($webform_submission
    ->getSourceUrl()
    ->toString(), $webform
    ->toUrl('canonical', [
    'absolute' => TRUE,
  ])
    ->toString());
  $this
    ->drupalLogout();
}