You are here

public function MembershipSubmissionTest::testSubmitMembershipQueryParams in Webform CiviCRM Integration 8.5

Test submitting a Membership using query params

File

tests/src/FunctionalJavascript/MembershipSubmissionTest.php, line 182

Class

MembershipSubmissionTest
Tests submitting a Webform with CiviCRM: Contact with Membership (Free)

Namespace

Drupal\Tests\webform_civicrm\FunctionalJavascript

Code

public function testSubmitMembershipQueryParams() {
  $this
    ->createMembershipType(1, TRUE, 'Basic');
  $this
    ->createMembershipType(1, TRUE, 'Basic Plus');
  $this
    ->drupalLogin($this->rootUser);
  $this
    ->drupalGet(Url::fromRoute('entity.webform.civicrm', [
    'webform' => $this->webform
      ->id(),
  ]));
  $this
    ->enableCivicrmOnWebform();

  // Configure Membership tab.
  $this
    ->getSession()
    ->getPage()
    ->clickLink('Memberships');
  $this
    ->getSession()
    ->getPage()
    ->selectFieldOption('membership_1_number_of_membership', 1);
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $this
    ->getSession()
    ->getPage()
    ->selectFieldOption('civicrm_1_membership_1_membership_membership_type_id', '- User Select -');
  $this
    ->htmlOutput();
  $this
    ->saveCiviCRMSettings();
  $this
    ->drupalGet($this->webform
    ->toUrl('edit-form'));
  $this
    ->assertSession()
    ->waitForField('CiviCRM Options');

  // Add the Default -> [current-page:query:membership]
  $membershipElementEdit = $this
    ->assertSession()
    ->elementExists('css', '[data-drupal-selector="edit-webform-ui-elements-civicrm-1-membership-1-membership-membership-type-id-operations"] a.webform-ajax-link');
  $membershipElementEdit
    ->click();
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $this
    ->getSession()
    ->getPage()
    ->checkField('properties[extra][aslist]');
  $this
    ->assertSession()
    ->checkboxChecked('properties[extra][aslist]');
  $this
    ->htmlOutput();
  $this
    ->getSession()
    ->getPage()
    ->clickLink('Advanced');
  $this
    ->assertSession()
    ->assertWaitOnAjaxRequest();
  $this
    ->htmlOutput();
  $fieldset = $this
    ->assertSession()
    ->elementExists('css', '[data-drupal-selector="edit-default"]');
  $fieldset
    ->click();
  $this
    ->getSession()
    ->getPage()
    ->fillField('Default value', '[current-page:query:membership]');
  $this
    ->getSession()
    ->getPage()
    ->pressButton('Save');
  $this
    ->drupalLogout();
  $this
    ->drupalGet($this->webform
    ->toUrl('canonical', [
    'query' => [
      'membership' => 2,
    ],
  ]));
  $this
    ->htmlOutput();

  // ToDo ->
  $this
    ->assertPageNoErrorMessages();
  $this
    ->assertSession()
    ->waitForField('First Name');
  $this
    ->getSession()
    ->getPage()
    ->fillField('First Name', 'Frederick');
  $this
    ->getSession()
    ->getPage()
    ->fillField('Last Name', 'Pabst');
  $this
    ->assertSession()
    ->pageTextContains('Basic Plus');
  $this
    ->getSession()
    ->getPage()
    ->pressButton('Submit');
  $this
    ->htmlOutput();

  // ToDo ->
  $this
    ->assertPageNoErrorMessages();
  $this
    ->assertSession()
    ->pageTextContains('New submission added to CiviCRM Webform Test.');
  $api_result = \Drupal::service('webform_civicrm.utils')
    ->wf_civicrm_api('membership', 'get', [
    'sequential' => 1,
  ]);
  $this
    ->assertEquals(1, $api_result['count']);
  $membership = reset($api_result['values']);
  $this
    ->assertEquals('Basic Plus', $membership['membership_name']);
  $this
    ->assertEquals('1', $membership['status_id']);
}