You are here

private function ActivitySubmissionTest::verifyActivityValues in Webform CiviCRM Integration 8.5

Verify activity values in civicrm.

2 calls to ActivitySubmissionTest::verifyActivityValues()
ActivitySubmissionTest::testMultipleAssignees in tests/src/FunctionalJavascript/ActivitySubmissionTest.php
Test activity on multiple assignees
ActivitySubmissionTest::testSubmitWebform in tests/src/FunctionalJavascript/ActivitySubmissionTest.php
Test submitting an activity

File

tests/src/FunctionalJavascript/ActivitySubmissionTest.php, line 119

Class

ActivitySubmissionTest
Tests submitting a Webform with CiviCRM: Contact with Activity

Namespace

Drupal\Tests\webform_civicrm\FunctionalJavascript

Code

private function verifyActivityValues($num = 1) {
  $api_result = $this->utils
    ->wf_civicrm_api('activity', 'get', [
    'sequential' => 1,
  ]);
  $this
    ->assertEquals(1, $api_result['count']);
  $activity = reset($api_result['values']);
  $this
    ->assertEquals('Awesome Activity', $activity['subject']);
  $this
    ->assertEquals('Lorem ipsum dolor sit amet.', $activity['details']);

  // CiviCRM Activity Type 1 -> Meeting (default)
  $this
    ->assertEquals('1', $activity['activity_type_id']);
  $today = date('Y-m-d H:i:s');
  $this
    ->assertTrue(strtotime($today) - strtotime($activity['activity_date_time']) < 120);
  $this
    ->assertEquals(90, $activity['duration']);
  $api_result = $this->utils
    ->wf_civicrm_api('ActivityContact', 'get', [
    'sequential' => 1,
    'return' => [
      "contact_id",
    ],
    'record_type_id' => "Activity Assignees",
    'activity_id' => $activity['id'],
  ]);
  $activityContacts = array_column($api_result['values'], 'contact_id');
  for ($i = 1; $i <= $num; $i++) {

    // In this test: contact_id 1 = Default Organization; contact_id 2 = Drupal User; contact_id 3 = Frederick
    $contact = $this->utils
      ->wf_civicrm_api('Contact', 'get', [
      'first_name' => $this->_contacts[$i]['first_name'],
      'last_name' => $this->_contacts[$i]['last_name'],
    ]);
    $this
      ->assertEquals(1, $contact['count']);
    $this
      ->assertTrue(in_array($contact['id'], $activityContacts));
  }

  // Ok now let's log back in and retrieve the Activity we just stored - so that we can update it.
  $this
    ->drupalLogin($this->adminUser);
  $this
    ->drupalGet($this->webform
    ->toUrl('canonical', [
    'query' => [
      'cid1' => $contact['id'],
      'aid' => $activity['id'],
    ],
  ]));
  $this
    ->assertPageNoErrorMessages();
  $this
    ->assertSession()
    ->waitForField('Activity Duration');
  $this
    ->htmlOutput();
  $this
    ->getSession()
    ->getPage()
    ->fillField('Activity Duration', '120');
  $this
    ->getSession()
    ->getPage()
    ->pressButton('Submit');
  $this
    ->htmlOutput();

  // All we've updated is the Activity Duration
  $api_result = $this->utils
    ->wf_civicrm_api('activity', 'get', [
    'sequential' => 1,
  ]);
  $this
    ->assertEquals(1, $api_result['count']);
  $activity = reset($api_result['values']);
  $this
    ->assertEquals(120, $activity['duration']);

  // Everything else should have remained the same:
  $this
    ->assertEquals('Awesome Activity', $activity['subject']);
  $this
    ->assertEquals('1', $activity['activity_type_id']);
  $this
    ->assertTrue(strtotime($today) - strtotime($activity['activity_date_time']) < 120);
}