You are here

public function CRMCoreActivityUITestCase::testActivityOperations in CRM Core 7

Test basic UI operations with Activities.

Create a contact. Add activity of every type to contact. Assert activities listed on Activities tab listing page. Edit every activity. Assert activities changed from listing page. Delete every activity. Assert they disappeared from listing page.

File

modules/crm_core_activity_ui/crm_core_activity_ui.test, line 36
Tests for Activity UI module.

Class

CRMCoreActivityUITestCase
Activity UI test case.

Code

public function testActivityOperations() {

  // Create and login user.
  // User should be able to create contacts and activities.
  $user = $this
    ->drupalCreateUser(array(
    'administer crm_core_contact entities',
    'view any crm_core_contact entity',
    'administer crm_core_activity entities',
    'view any crm_core_activity entity',
  ));
  $this
    ->drupalLogin($user);

  // Create Houshold contact.
  $household_contact = array(
    'contact_name[und][0][family]' => $this
      ->randomName(),
  );
  $this
    ->drupalPost('crm-core/contact/add/household', $household_contact, t('Save Household'));
  $this
    ->drupalGet('crm-core/contact/1/activity');
  $this
    ->assertText(t('There are no activities available.'), t('No activities avaiable for newly created contact.'));
  $this
    ->assertLink(t('Add an activity'));
  $this
    ->drupalGet('crm-core/contact/1/activity/add');
  $this
    ->assertLink(t('Meeting'));
  $this
    ->assertLink(t('Phone call'));

  // Create Meeting activity. Ensure it it listed.
  $meeting_activity = array(
    'title' => $this
      ->randomName(),
    'field_activity_date[und][0][value][date]' => $this
      ->randomDate(),
    'field_activity_date[und][0][value][time]' => $this
      ->randomTime(),
    'field_activity_notes[und][0][value]' => $this
      ->randomString(),
  );
  $this
    ->drupalPost('crm-core/contact/1/activity/add/meeting', $meeting_activity, t('Save Activity'));
  $this
    ->assertNoRaw('<div class="messages error">', t('No errors after adding new activity.'));

  // Create Meeting activity. Ensure it it listed.
  $phonecall_activity = array(
    'title' => $this
      ->randomName(),
    'field_activity_date[und][0][value][date]' => $this
      ->randomDate(),
    'field_activity_date[und][0][value][time]' => $this
      ->randomTime(),
    'field_activity_notes[und][0][value]' => $this
      ->randomString(),
  );
  $this
    ->drupalPost('crm-core/contact/1/activity/add/phone_call', $phonecall_activity, t('Save Activity'));
  $this
    ->assertNoRaw('<div class="messages error">', t('No errors after adding new activity.'));

  // Update activity and assert its title changed on the list.
  $meeting_activity = array(
    'title' => $this
      ->randomName(),
    'field_activity_date[und][0][value][date]' => $this
      ->randomDate(),
    'field_activity_date[und][0][value][time]' => $this
      ->randomTime(),
    'field_activity_notes[und][0][value]' => $this
      ->randomString(),
  );
  $this
    ->drupalPost('crm-core/activity/1/edit', $meeting_activity, t('Save Activity'));
  $this
    ->assertNoRaw('<div class="messages error">', t('No errors after updating activity.'));
  $this
    ->assertText($meeting_activity['title'], t('Activity updated.'));
  $this
    ->drupalGet('crm-core/contact/1/activity');
  $this
    ->assertRaw($meeting_activity['title'], t('Updated activity listed properly.'));

  // Update phone call activity and assert its title changed on the list.
  $phonecall_activity = array(
    'title' => $this
      ->randomName(),
    'field_activity_date[und][0][value][date]' => $this
      ->randomDate(),
    'field_activity_date[und][0][value][time]' => $this
      ->randomTime(),
    'field_activity_notes[und][0][value]' => $this
      ->randomString(),
  );
  $this
    ->drupalPost('crm-core/activity/2/edit', $phonecall_activity, t('Save Activity'));
  $this
    ->assertNoRaw('<div class="messages error">', t('No errors after updating activity.'));
  $this
    ->assertText($phonecall_activity['title'], t('Activity updated.'));
  $this
    ->drupalGet('crm-core/contact/1/activity');
  $this
    ->assertRaw($phonecall_activity['title'], t('Updated activity listed properly.'));

  // Delete Meeting activity.
  $this
    ->drupalPost('crm-core/activity/1/delete', array(), t('Delete'));
  $this
    ->assertNoRaw('<div class="messages error">', t('No errors after deleting activity.'));
  $this
    ->assertNoRaw($meeting_activity['title'] . ' </td>', t('Deleted activity is no more listed.'));

  // Delete Phone call activity.
  $this
    ->drupalPost('crm-core/activity/2/delete', array(), t('Delete'));
  $this
    ->assertNoRaw('<div class="messages error">', t('No errors after deleting activity.'));
  $this
    ->drupalGet('crm-core/contact/1/activity');
  $this
    ->assertNoRaw($phonecall_activity['title'] . ' </td>', t('Deleted activity is no more listed.'));

  // Assert there is no activities left.
  $this
    ->drupalGet('crm-core/contact/1/activity');
  $this
    ->assertText(t('There are no activities available.'), t('No activities listed.'));
}