$this->assertNotEquals($activity['id'], $caseActivities[$newActivityId]['id']);
}
+ /**
+ * Similar to testConvertToCaseActivity above but for copy-to-case.
+ */
+ public function testCopyToCase() {
+ $case1 = $this->callAPISuccess('Case', 'create', [
+ 'contact_id' => $this->target,
+ 'case_type_id' => 'housing_support',
+ 'subject' => 'Needs housing',
+ ]);
+ $contact2 = $this->individualCreate([], 1, TRUE);
+ $case2 = $this->callAPISuccess('Case', 'create', [
+ 'contact_id' => $contact2,
+ 'case_type_id' => 'housing_support',
+ 'subject' => 'Also needs housing',
+ ]);
+
+ $activity = $this->callAPISuccess('Activity', 'create', [
+ 'source_contact_id' => $this->loggedInUser,
+ 'activity_type_id' => 'Meeting',
+ 'subject' => 'To be copied to case',
+ 'status_id' => 'Completed',
+ 'target_id' => $this->target,
+ 'case_id' => $case1['id'],
+ ]);
+
+ $params = [
+ 'activityID' => $activity['id'],
+ 'caseID' => $case2['id'],
+ 'mode' => 'copy',
+ 'targetContactIds' => $contact2,
+ ];
+ $result = CRM_Activity_Page_AJAX::_convertToCaseActivity($params);
+
+ $this->assertEmpty($result['error_msg']);
+ $newActivityId = $result['newId'];
+
+ $caseActivities = $this->callAPISuccess('Activity', 'get', [
+ 'case_id' => $case2['id'],
+ 'return' => ['id', 'subject', 'target_contact_id'],
+ ])['values'];
+ $this->assertEquals('To be copied to case', $caseActivities[$newActivityId]['subject']);
+ $this->assertEquals($contact2, $caseActivities[$newActivityId]['target_contact_id'][0]);
+ // This should be a different physical activity, not the same db record as the original.
+ $this->assertNotEquals($activity['id'], $caseActivities[$newActivityId]['id']);
+
+ // original should still be on old case
+ $originalActivity = $this->callAPISuccess('Activity', 'getsingle', [
+ 'id' => $activity['id'],
+ 'return' => ['is_deleted', 'case_id'],
+ ]);
+ $this->assertEquals(0, $originalActivity['is_deleted']);
+ $this->assertEquals($case1['id'], $originalActivity['case_id'][0]);
+ }
+
+ /**
+ * Similar to testCopyToCase above but for move-to-case.
+ */
+ public function testMoveToCase() {
+ $case1 = $this->callAPISuccess('Case', 'create', [
+ 'contact_id' => $this->target,
+ 'case_type_id' => 'housing_support',
+ 'subject' => 'Needs housing',
+ ]);
+ $contact2 = $this->individualCreate([], 1, TRUE);
+ $case2 = $this->callAPISuccess('Case', 'create', [
+ 'contact_id' => $contact2,
+ 'case_type_id' => 'housing_support',
+ 'subject' => 'Also needs housing',
+ ]);
+
+ $activity = $this->callAPISuccess('Activity', 'create', [
+ 'source_contact_id' => $this->loggedInUser,
+ 'activity_type_id' => 'Meeting',
+ 'subject' => 'To be moved to case',
+ 'status_id' => 'Completed',
+ 'target_id' => $this->target,
+ 'case_id' => $case1['id'],
+ ]);
+
+ $params = [
+ 'activityID' => $activity['id'],
+ 'caseID' => $case2['id'],
+ 'mode' => 'move',
+ 'targetContactIds' => $contact2,
+ ];
+ $result = CRM_Activity_Page_AJAX::_convertToCaseActivity($params);
+
+ $this->assertEmpty($result['error_msg']);
+ $newActivityId = $result['newId'];
+
+ $caseActivities = $this->callAPISuccess('Activity', 'get', [
+ 'case_id' => $case2['id'],
+ 'return' => ['id', 'subject', 'target_contact_id'],
+ ])['values'];
+ $this->assertEquals('To be moved to case', $caseActivities[$newActivityId]['subject']);
+ $this->assertEquals($contact2, $caseActivities[$newActivityId]['target_contact_id'][0]);
+ // This should be a different physical activity, not the same db record as the original.
+ $this->assertNotEquals($activity['id'], $caseActivities[$newActivityId]['id']);
+
+ // original should be marked deleted
+ $originalActivity = $this->callAPISuccess('Activity', 'getsingle', [
+ 'id' => $activity['id'],
+ 'return' => ['is_deleted', 'case_id'],
+ ]);
+ $this->assertEquals(1, $originalActivity['is_deleted']);
+ $this->assertEquals($case1['id'], $originalActivity['case_id'][0]);
+ }
+
/**
* Check if the selected filters are saved.
*/