You are here

private function MultiCustomFieldsSubmissionTest::verifyCustomValues in Webform CiviCRM Integration 8.5

Verify stored values.

2 calls to MultiCustomFieldsSubmissionTest::verifyCustomValues()
MultiCustomFieldsSubmissionTest::testContactRefSubmission in tests/src/FunctionalJavascript/MultiCustomFieldsSubmissionTest.php
Submit webform with 3 contact reference fields.
MultiCustomFieldsSubmissionTest::testSubmitWebform in tests/src/FunctionalJavascript/MultiCustomFieldsSubmissionTest.php
Test submitting Custom Fields

File

tests/src/FunctionalJavascript/MultiCustomFieldsSubmissionTest.php, line 418

Class

MultiCustomFieldsSubmissionTest
Tests submitting a Webform with CiviCRM: single contact + custom fields.

Namespace

Drupal\Tests\webform_civicrm\FunctionalJavascript

Code

private function verifyCustomValues($params) {
  $customValues = $this->utils
    ->wf_civicrm_api('CustomValue', 'get', [
    'entity_id' => $this->rootUserCid,
  ])['values'];
  $monthValues = $customValues[$this->_customFields['month']];
  $dataValues = $customValues[$this->_customFields['data']];
  $contactRefValues = $customValues[$this->_customFields['consultant']];

  //Assert Household Data submission
  if (!empty($this->_hh)) {
    unset($monthValues['entity_id'], $monthValues['latest'], $monthValues['id']);

    //Ensure 5 custom field value is created, with only 3 having the values.
    $this
      ->assertEquals(count($monthValues), 5);
    $this
      ->assertEquals($monthValues[1], 'Jan');
    $this
      ->assertEquals($monthValues[2], 'Feb');
    $this
      ->assertEquals($monthValues[3], 'March');
    $this
      ->assertEmpty($monthValues[4]);
    $this
      ->assertEmpty($monthValues[5]);
    unset($dataValues['entity_id'], $dataValues['latest'], $dataValues['id']);

    //Ensure 5 custom field value is created, with only 3 having the values.
    $this
      ->assertEquals(count($dataValues), 5);
    $this
      ->assertEquals($dataValues[1], 100);
    $this
      ->assertEquals($dataValues[2], 200);
    $this
      ->assertEquals($dataValues[3], 200);
    $this
      ->assertEmpty($dataValues[4]);
    $this
      ->assertEmpty($dataValues[5]);
    unset($contactRefValues['entity_id'], $contactRefValues['latest'], $contactRefValues['id']);

    //Ensure 5 custom field value is created, with only 3 having the values.
    $this
      ->assertEquals(count($contactRefValues), 5);
    $this
      ->assertEquals($contactRefValues[1], $this->rootUserCid);
    $this
      ->assertEquals($contactRefValues[2], $this->_hh[2]['id']);
    $this
      ->assertEquals($contactRefValues[3], $this->_hh[3]['id']);
    $this
      ->assertEmpty($contactRefValues[4]);
    $this
      ->assertEmpty($contactRefValues[5]);
    return;
  }

  // Assert if submitted params are present in the custom values.
  $this
    ->assertTrue(in_array($this->_contact1['id'], $contactRefValues));
  $this
    ->assertTrue(in_array($this->_contact2['id'], $contactRefValues));
  for ($c = 1; $c <= $this->_totalMV; $c++) {
    $contact = current($this->utils
      ->wf_civicrm_api('Contact', 'get', [
      'id' => $contactRefValues[$c],
    ])['values']);

    //We have entered multi value fields for only first 3 contacts.
    if ($c < 4) {
      for ($i = 1; $i <= $this->_totalMV; $i++) {
        if ($c == 2) {
          $cid = $this->_contact1['id'];
          $this
            ->assertEquals($this->_contact1["first_name"], $contact['first_name']);
          $this
            ->assertEquals($this->_contact1["last_name"], $contact['last_name']);
        }
        elseif ($c == 3) {
          $cid = $this->_contact2['id'];
          $this
            ->assertEquals($this->_contact2["first_name"], $contact['first_name']);
          $this
            ->assertEquals($this->_contact2["last_name"], $contact['last_name']);
        }
        $key = $i;
        if (!empty($cid)) {

          //Assert custom values stored on 2nd and 3rd contact.
          $customValues = $this->utils
            ->wf_civicrm_api('CustomValue', 'get', [
            'entity_id' => $cid,
          ])['values'];
          $monthValues = $customValues[$this->_customFields['month']];
          $dataValues = $customValues[$this->_customFields['data']];
          unset($monthValues['entity_id'], $monthValues['latest'], $monthValues['id']);
          $monthValues = array_values($monthValues);
          unset($dataValues['entity_id'], $dataValues['latest'], $dataValues['id']);
          $dataValues = array_values($dataValues);
          $key--;
        }
        $this
          ->assertEquals($params["civicrm_{$c}_contact_{$i}_cg1_custom_1"], $monthValues[$key]);
        $this
          ->assertEquals($params["civicrm_{$c}_contact_{$i}_cg1_custom_2"], $dataValues[$key]);
      }
    }
    else {
      $this
        ->assertEquals($params["civicrm_{$c}_contact_1_contact_first_name"], $contact['first_name']);
      $this
        ->assertEquals($params["civicrm_{$c}_contact_1_contact_last_name"], $contact['last_name']);
    }
  }
}