You are here

trait WebformNodeBrowserTestTrait in Webform 6.x

Same name and namespace in other branches
  1. 8.5 modules/webform_node/tests/src/Traits/WebformNodeBrowserTestTrait.php \Drupal\Tests\webform_node\Traits\WebformNodeBrowserTestTrait

Provides convenience methods for webform node browser tests.

Hierarchy

3 files declare their use of WebformNodeBrowserTestTrait
WebformGroupBrowserTestBase.php in modules/webform_group/tests/src/Functional/WebformGroupBrowserTestBase.php
WebformNodeBrowserTestBase.php in modules/webform_node/tests/src/Functional/WebformNodeBrowserTestBase.php
WebformSettingsAjaxTest.php in tests/src/Functional/Settings/WebformSettingsAjaxTest.php

File

modules/webform_node/tests/src/Traits/WebformNodeBrowserTestTrait.php, line 11

Namespace

Drupal\Tests\webform_node\Traits
View source
trait WebformNodeBrowserTestTrait {

  /**
   * Post a new submission to a webform node.
   *
   * @param \Drupal\node\NodeInterface $node
   *   A Webform node.
   * @param array $edit
   *   Submission values.
   * @param string $submit
   *   Value of the submit button whose click is to be emulated.
   * @param array $options
   *   Options to be forwarded to the url generator.
   *
   * @return int
   *   The created submission's sid.
   *
   * @see \Drupal\webform\Tests\WebformTestBase::postSubmission
   */
  protected function postNodeSubmission(NodeInterface $node, array $edit = [], $submit = NULL, array $options = []) {

    /** @var \Drupal\webform\WebformEntityReferenceManagerInterface $entity_reference_manager */
    $entity_reference_manager = \Drupal::service('webform.entity_reference_manager');
    $webform = $entity_reference_manager
      ->getWebform($node);
    $submit = $this
      ->getWebformSubmitButtonLabel($webform, $submit);
    $this
      ->drupalPostForm('/node/' . $node
      ->id(), $edit, $submit, $options);
    return $this
      ->getLastSubmissionId($webform);
  }

  /**
   * Post a new test submission to a webform node.
   *
   * @param \Drupal\node\NodeInterface $node
   *   A Webform node.
   * @param array $edit
   *   Submission values.
   * @param string $submit
   *   Value of the submit button whose click is to be emulated.
   * @param array $options
   *   Options to be forwarded to the url generator.
   *
   * @return int
   *   The created submission's sid.
   *
   * @see \Drupal\webform\Tests\WebformTestBase::postSubmission
   */
  protected function postNodeSubmissionTest(NodeInterface $node, array $edit = [], $submit = NULL, array $options = []) {

    /** @var \Drupal\webform\WebformEntityReferenceManagerInterface $entity_reference_manager */
    $entity_reference_manager = \Drupal::service('webform.entity_reference_manager');
    $webform = $entity_reference_manager
      ->getWebform($node);
    $submit = $this
      ->getWebformSubmitButtonLabel($webform, $submit);
    $this
      ->drupalPostForm('/node/' . $node
      ->id() . '/webform/test', $edit, $submit, $options);
    return $this
      ->getLastSubmissionId($webform);
  }

  /**
   * Create a webform node.
   *
   * @param string $webform_id
   *   A webform id.
   * @param array $settings
   *   (optional) An associative array of settings for the node, as used in
   *   entity_create().
   *
   * @return \Drupal\node\NodeInterface
   *   A webform node.
   */
  protected function createWebformNode($webform_id, array $settings = []) {
    $settings += [
      'type' => 'webform',
    ];
    $node = $this
      ->drupalCreateNode($settings);
    $node->webform->target_id = $webform_id;
    $node->webform->status = WebformInterface::STATUS_OPEN;
    $node->webform->open = '';
    $node->webform->close = '';
    $node
      ->save();
    return $node;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
WebformNodeBrowserTestTrait::createWebformNode protected function Create a webform node.
WebformNodeBrowserTestTrait::postNodeSubmission protected function Post a new submission to a webform node.
WebformNodeBrowserTestTrait::postNodeSubmissionTest protected function Post a new test submission to a webform node.