From 7eb4b044871acdedb16b87bb7ed99a89994d570e Mon Sep 17 00:00:00 2001 From: demeritcowboy Date: Sat, 29 Apr 2023 13:31:19 -0400 Subject: [PATCH] add test --- tests/phpunit/CRM/Activity/Page/AJAXTest.php | 108 +++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/tests/phpunit/CRM/Activity/Page/AJAXTest.php b/tests/phpunit/CRM/Activity/Page/AJAXTest.php index 6e543dc033..d4d30f66a8 100644 --- a/tests/phpunit/CRM/Activity/Page/AJAXTest.php +++ b/tests/phpunit/CRM/Activity/Page/AJAXTest.php @@ -68,6 +68,114 @@ class CRM_Activity_Page_AJAXTest extends CiviUnitTestCase { $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. */ -- 2.25.1