You are here

public function WebformConditionTest::testConditions in Webform 8.5

Same name and namespace in other branches
  1. 6.x tests/src/Kernel/WebformConditionTest.php \Drupal\Tests\webform\Kernel\WebformConditionTest::testConditions()

Tests conditions.

File

tests/src/Kernel/WebformConditionTest.php, line 26

Class

WebformConditionTest
Tests that conditions, provided by the webform module, are working properly.

Namespace

Drupal\Tests\webform\Kernel

Code

public function testConditions() {
  $this
    ->installSchema('webform', [
    'webform',
  ]);
  $manager = $this->container
    ->get('plugin.manager.condition');
  $this
    ->createUser();

  // Get some nodes of various types to check against.
  $webform = Webform::create([
    'id' => 'test',
  ]);
  $webform
    ->save();

  // Grab the webform condition and configure it to check against webforms
  // of 'not_test' and set the context to the test webform.
  $condition = $manager
    ->createInstance('webform')
    ->setConfig('webforms', [
    'not_test' => 'not_test',
  ])
    ->setContextValue('webform', $webform);
  $this
    ->assertFalse($condition
    ->execute(), 'Webform check fails.');

  // Check for the proper summary.
  $this
    ->assertEquals('The webform is not_test', $condition
    ->summary());

  // Set the webform check to test.
  $condition
    ->setConfig('webforms', [
    'test' => 'test',
  ]);
  $this
    ->assertTrue($condition
    ->execute(), 'Webform test pass webform condition check for test');

  // Check for the proper summary.
  $this
    ->assertEquals('The webform is test', $condition
    ->summary());

  // Set the webform check to not_test or test.
  $condition
    ->setConfig('webforms', [
    'not_test' => 'not_test',
    'test' => 'test',
  ]);
  $this
    ->assertTrue($condition
    ->execute(), 'Webform test pass webform condition check for not_test or test');

  // Check for the proper summary.
  $this
    ->assertEquals('The webform is not_test or test', $condition
    ->summary());

  // Check a greater than 2 webform summary scenario.
  $condition
    ->setConfig('webforms', [
    'not_test' => 'not_test',
    'test' => 'test',
    'other_test' => 'other_test',
  ]);
  $this
    ->assertEquals('The webform is not_test, test or other_test', $condition
    ->summary());

  // Test Constructor injection.
  $condition = $manager
    ->createInstance('webform', [
    'webforms' => [
      'test' => 'test',
    ],
    'context' => [
      'webform' => $webform,
    ],
  ]);
  $this
    ->assertTrue($condition
    ->execute(), 'Constructor injection of context and configuration working as anticipated.');

  // Check webform_submission context.

  /** @var \Drupal\webform\WebformSubmissionInterface $webform_submission */
  $webform_submission = WebformSubmission::create([
    'webform_id' => $webform
      ->id(),
  ]);
  $condition = $manager
    ->createInstance('webform')
    ->setConfig('webforms', [
    'test' => 'test',
  ])
    ->setContextValue('webform_submission', $webform_submission);
  $this
    ->assertEquals('The webform is test', $condition
    ->summary());
}