You are here

WebformElementSameTest.php in Webform 8.5

Same filename and directory in other branches
  1. 6.x tests/src/Functional/Element/WebformElementSameTest.php

File

tests/src/Functional/Element/WebformElementSameTest.php
View source
<?php

namespace Drupal\Tests\webform\Functional\Element;

use Drupal\webform\Entity\Webform;
use Drupal\webform\Entity\WebformSubmission;

/**
 * Tests for same element.
 *
 * @group webform
 */
class WebformElementSameTest extends WebformElementBrowserTestBase {

  /**
   * Webforms to load.
   *
   * @var array
   */
  protected static $testWebforms = [
    'test_element_same',
  ];

  /**
   * Test same element.
   */
  public function testSame() {
    $webform = Webform::load('test_element_same');

    // Check same checked.
    $this
      ->postSubmission($webform);
    $this
      ->assertRaw("textfield_source: '{some value}'\ntextfield_same: 1\ntextfield_destination: '{some value}'\nwebform_name_source:\n  title: Mr\n  first: John\n  middle: Adam\n  last: Smith\n  suffix: Jr\n  degree: Dr\nwebform_name_same: 1\nwebform_name_destination:\n  title: Mr\n  first: John\n  middle: Adam\n  last: Smith\n  suffix: Jr\n  degree: Dr\ntextfield_multiple_source:\n  - '{one value}'\n  - '{two value}'\ntextfield_multiple_same: 1\ntextfield_multiple_destination:\n  - '{one value}'\n  - '{two value}'");

    // Check same not checked throw validate errors.
    $edit = [
      'textfield_same' => FALSE,
      'webform_name_same' => FALSE,
      'textfield_multiple_same' => FALSE,
    ];
    $this
      ->postSubmission($webform, $edit);
    $this
      ->assertRaw('textfield_destination field is required.');
    $this
      ->assertRaw('webform_name_destination field is required.');
    $this
      ->assertRaw('textfield_multiple_destination field is required.');

    // Check same not checked throw validate errors.
    $edit = [
      'textfield_same' => FALSE,
      'textfield_destination' => '{some other value}',
      'webform_name_same' => FALSE,
      'webform_name_destination[title][select]' => 'Mrs',
      'webform_name_destination[first]' => '{first}',
      'webform_name_destination[middle]' => '{middle}',
      'webform_name_destination[last]' => '{last}',
      'webform_name_destination[suffix]' => '{suffix}',
      'webform_name_destination[degree]' => '{degree}',
      'textfield_multiple_same' => FALSE,
      'textfield_multiple_destination[items][0][_item_]' => '{three value}',
    ];
    $sid = $this
      ->postSubmission($webform, $edit);
    $this
      ->assertRaw("textfield_source: '{some value}'\ntextfield_same: 0\ntextfield_destination: '{some other value}'\nwebform_name_source:\n  title: Mr\n  first: John\n  middle: Adam\n  last: Smith\n  suffix: Jr\n  degree: Dr\nwebform_name_same: 0\nwebform_name_destination:\n  title: Mrs\n  first: '{first}'\n  middle: '{middle}'\n  last: '{last}'\n  suffix: '{suffix}'\n  degree: '{degree}'\ntextfield_multiple_source:\n  - '{one value}'\n  - '{two value}'\ntextfield_multiple_same: 0\ntextfield_multiple_destination:\n  - '{three value}'");
    $webform_submission = WebformSubmission::load($sid);

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

    // Check textfield source and destination are not equal.
    $this
      ->assertNotEqual($webform_submission
      ->getElementData('textfield_source'), $webform_submission
      ->getElementData('textfield_destination'));

    // Set textfield same as to TRUE.
    // @see \Drupal\webform\Plugin\WebformElement\WebformSame::preSave
    $webform_submission
      ->setElementData('textfield_same', TRUE);
    $webform_submission
      ->save();

    // Check textfield source and destination are now equal.
    $this
      ->assertEqual($webform_submission
      ->getElementData('textfield_source'), $webform_submission
      ->getElementData('textfield_destination'));
  }

}

Classes

Namesort descending Description
WebformElementSameTest Tests for same element.