You are here

public function WebformSubmissionListBuilderTest::testResults in Webform 8.5

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

Tests results.

File

tests/src/Functional/WebformSubmissionListBuilderTest.php, line 31

Class

WebformSubmissionListBuilderTest
Tests for webform submission list builder.

Namespace

Drupal\Tests\webform\Functional

Code

public function testResults() {
  $own_submission_user = $this
    ->drupalCreateUser([
    'view own webform submission',
    'edit own webform submission',
    'delete own webform submission',
    'access webform submission user',
  ]);
  $admin_submission_user = $this
    ->drupalCreateUser([
    'administer webform submission',
  ]);

  /** @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',
  ]));

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

  // Login the own submission user.
  $this
    ->drupalLogin($own_submission_user);

  // Make the second submission to be starred (aka sticky).
  $submissions[1]
    ->setSticky(TRUE)
    ->save();

  // Make the third submission to be locked.
  $submissions[2]
    ->setLocked(TRUE)
    ->save();
  $this
    ->drupalLogin($admin_submission_user);

  /* Filter */
  $this
    ->drupalGet('/admin/structure/webform/manage/' . $webform
    ->id() . '/results/submissions');

  // Check state options with totals.
  $this
    ->assertRaw('<select data-drupal-selector="edit-state" id="edit-state" name="state" class="form-select"><option value="" selected="selected">All [4]</option><option value="starred">Starred [1]</option><option value="unstarred">Unstarred [3]</option><option value="locked">Locked [1]</option><option value="unlocked">Unlocked [3]</option></select>');

  // Check results with no filtering.
  $this
    ->assertLinkByHref($submissions[0]
    ->toUrl()
    ->toString());
  $this
    ->assertLinkByHref($submissions[1]
    ->toUrl()
    ->toString());
  $this
    ->assertLinkByHref($submissions[2]
    ->toUrl()
    ->toString());
  $this
    ->assertRaw($submissions[0]
    ->getElementData('first_name'));
  $this
    ->assertRaw($submissions[1]
    ->getElementData('first_name'));
  $this
    ->assertRaw($submissions[2]
    ->getElementData('first_name'));
  $this
    ->assertNoFieldById('edit-reset', 'reset');

  // Check results filtered by uuid.
  $this
    ->drupalPostForm('/admin/structure/webform/manage/' . $webform
    ->id() . '/results/submissions', [
    'search' => $submissions[0]
      ->get('uuid')->value,
  ], 'Filter');
  $this
    ->assertUrl('admin/structure/webform/manage/' . $webform
    ->id() . '/results/submissions?search=' . $submissions[0]
    ->get('uuid')->value);
  $this
    ->assertRaw($submissions[0]
    ->getElementData('first_name'));
  $this
    ->assertNoRaw($submissions[1]
    ->getElementData('first_name'));
  $this
    ->assertNoRaw($submissions[2]
    ->getElementData('first_name'));

  // Check results filtered by key(word).
  $this
    ->drupalPostForm('/admin/structure/webform/manage/' . $webform
    ->id() . '/results/submissions', [
    'search' => $submissions[0]
      ->getElementData('first_name'),
  ], 'Filter');
  $this
    ->assertUrl('admin/structure/webform/manage/' . $webform
    ->id() . '/results/submissions?search=' . $submissions[0]
    ->getElementData('first_name'));
  $this
    ->assertRaw($submissions[0]
    ->getElementData('first_name'));
  $this
    ->assertNoRaw($submissions[1]
    ->getElementData('first_name'));
  $this
    ->assertNoRaw($submissions[2]
    ->getElementData('first_name'));
  $this
    ->assertFieldById('edit-reset', 'Reset');

  // Check results filtered by state:starred.
  $this
    ->drupalPostForm('/admin/structure/webform/manage/' . $webform
    ->id() . '/results/submissions', [
    'state' => 'starred',
  ], 'Filter');
  $this
    ->assertUrl('admin/structure/webform/manage/' . $webform
    ->id() . '/results/submissions?state=starred');
  $this
    ->assertRaw('<option value="starred" selected="selected">Starred [1]</option>');
  $this
    ->assertNoRaw($submissions[0]
    ->getElementData('first_name'));
  $this
    ->assertRaw($submissions[1]
    ->getElementData('first_name'));
  $this
    ->assertNoRaw($submissions[2]
    ->getElementData('first_name'));
  $this
    ->assertFieldById('edit-reset', 'Reset');

  // Check results filtered by state:starred.
  $this
    ->drupalPostForm('/admin/structure/webform/manage/' . $webform
    ->id() . '/results/submissions', [
    'state' => 'locked',
  ], 'Filter');
  $this
    ->assertUrl('admin/structure/webform/manage/' . $webform
    ->id() . '/results/submissions?state=locked');
  $this
    ->assertRaw('<option value="locked" selected="selected">Locked [1]</option>');
  $this
    ->assertNoRaw($submissions[0]
    ->getElementData('first_name'));
  $this
    ->assertNoRaw($submissions[1]
    ->getElementData('first_name'));
  $this
    ->assertRaw($submissions[2]
    ->getElementData('first_name'));
  $this
    ->assertFieldById('edit-reset', 'Reset');
}