X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests%2Fphpunit%2FCRM%2FCase%2FXMLProcessor%2FReportTest.php;h=3d1ce552568b689b5c9a4247e489c86ae7f20f4a;hb=9c651cb5d5cb25845be4629ecdee17a11d1125dd;hp=e199f656839c6cb05a33dd9e22e1e1394d1cefb9;hpb=300f9c7335deeb3ee0157d666c57bc17abc64bb5;p=civicrm-core.git diff --git a/tests/phpunit/CRM/Case/XMLProcessor/ReportTest.php b/tests/phpunit/CRM/Case/XMLProcessor/ReportTest.php index e199f65683..3d1ce55256 100644 --- a/tests/phpunit/CRM/Case/XMLProcessor/ReportTest.php +++ b/tests/phpunit/CRM/Case/XMLProcessor/ReportTest.php @@ -71,6 +71,60 @@ class CRM_Case_XMLProcessor_ReportTest extends CiviCaseTestCase { } } + /** + * This is similar to testGetCaseReport but test with a timeline that + * does have Meeting in it. + */ + public function testGetCaseReportWithMeetingInTimeline() { + $client_id = $this->individualCreate([ + 'first_name' => 'Casey', + 'middle_name' => '', + 'last_name' => 'Reportee', + 'prefix_id' => NULL, + 'suffix_id' => NULL, + ]); + $caseObj = $this->createCase($client_id, $this->_loggedInUser); + $case_id = $caseObj->id; + + // Now update the timeline so it has Meeting in it. + $this->addMeetingToTimeline(); + + // Add a meeting activity to the case. + $meetingTypeId = $this->callAPISuccess('OptionValue', 'getsingle', [ + 'return' => ["value"], + 'option_group_id' => 'activity_type', + 'name' => 'Meeting', + ]); + $this->callAPISuccess('activity', 'create', [ + 'case_id' => $case_id, + 'activity_type_id' => $meetingTypeId['value'], + 'activity_date_time' => '20191114123456', + 'subject' => 'Test Meeting', + 'source_contact_id' => $this->_loggedInUser, + 'target_contact_id' => $client_id, + ]); + + $caseReportParams = [ + 'is_redact' => FALSE, + 'include_activities' => 1, + ]; + + // run the thing we're testing and get the output vars + $template = CRM_Case_XMLProcessor_Report::populateCaseReportTemplate($client_id, $case_id, 'standard_timeline', $caseReportParams, $this->report); + $assigned_vars = $template->get_template_vars(); + + // We don't want to run all the data in the dataprovider but we know + // in this case it should be the same as the second one in the + // dataprovider so we can reuse it. + $expected = $this->caseReportDataProvider()[1][1]; + $this->updateExpectedBecauseDataProviderEvaluatesBeforeEverything($expected, $client_id, $case_id); + + foreach ($expected as $key => $value) { + // does the assigned template var match the expected value? + $this->assertEquals($value, $assigned_vars[$key], "$key does not match" . print_r($assigned_vars[$key], TRUE)); + } + } + /** * Data provider for testGetCaseReport * @return array @@ -80,7 +134,9 @@ class CRM_Case_XMLProcessor_ReportTest extends CiviCaseTestCase { [ // activity set name 'standard_timeline', - // some expected assigned vars of CRM_Core_Smarty template + // Some expected assigned vars of CRM_Core_Smarty template. + // In particular we shouldn't have meeting in the output since it's + // not in the timeline. [ 'case' => [ 'clientName' => 'Casey Reportee', @@ -95,58 +151,69 @@ class CRM_Case_XMLProcessor_ReportTest extends CiviCaseTestCase { 0 => [ 'fields' => [ 0 => [ + 'name' => 'Client', 'label' => 'Client', 'value' => 'Casey Reportee', 'type' => 'String', ], 1 => [ + 'name' => 'Activity Type', 'label' => 'Activity Type', 'value' => 'Open Case', 'type' => 'String', ], 2 => [ + 'name' => 'Subject', 'label' => 'Subject', 'value' => 'Case Subject', 'type' => 'Memo', ], 3 => [ + 'name' => 'Created By', 'label' => 'Created By', // data providers run before everything, so update this later 'value' => 'placeholder', 'type' => 'String', ], 4 => [ + 'name' => 'Reported By', 'label' => 'Reported By', // see above - need to update this later 'value' => 'placeholder', 'type' => 'String', ], 5 => [ + 'name' => 'Medium', 'label' => 'Medium', 'value' => 'Phone', 'type' => 'String', ], 6 => [ + 'name' => 'Location', 'label' => 'Location', 'value' => NULL, 'type' => 'String', ], 7 => [ + 'name' => 'Date and Time', 'label' => 'Date and Time', 'value' => '2019-11-14 00:00:00', 'type' => 'Date', ], 8 => [ + 'name' => 'Details', 'label' => 'Details', 'value' => NULL, 'type' => 'Memo', ], 9 => [ + 'name' => 'Status', 'label' => 'Status', 'value' => 'Completed', 'type' => 'String', ], 10 => [ + 'name' => 'Priority', 'label' => 'Priority', 'value' => 'Normal', 'type' => 'String', @@ -158,53 +225,63 @@ class CRM_Case_XMLProcessor_ReportTest extends CiviCaseTestCase { 1 => [ 'fields' => [ 0 => [ + 'name' => 'Client', 'label' => 'Client', 'value' => 'Casey Reportee', 'type' => 'String', ], 1 => [ + 'name' => 'Activity Type', 'label' => 'Activity Type', 'value' => 'Medical evaluation', 'type' => 'String', ], 2 => [ + 'name' => 'Subject', 'label' => 'Subject', 'value' => '', 'type' => 'Memo', ], 3 => [ + 'name' => 'Created By', 'label' => 'Created By', // see above - need to update this later 'value' => 'placeholder', 'type' => 'String', ], 4 => [ + 'name' => 'Reported By', 'label' => 'Reported By', // see above - need to update this later 'value' => 'placeholder', 'type' => 'String', ], 5 => [ + 'name' => 'Location', 'label' => 'Location', 'value' => NULL, 'type' => 'String', ], 6 => [ + 'name' => 'Date and Time', 'label' => 'Date and Time', 'value' => '2019-11-15 00:00:00', 'type' => 'Date', ], 7 => [ + 'name' => 'Details', 'label' => 'Details', 'value' => NULL, 'type' => 'Memo', ], 8 => [ + 'name' => 'Status', 'label' => 'Status', 'value' => 'Scheduled', 'type' => 'String', ], 9 => [ + 'name' => 'Priority', 'label' => 'Priority', 'value' => 'Normal', 'type' => 'String', @@ -219,7 +296,8 @@ class CRM_Case_XMLProcessor_ReportTest extends CiviCaseTestCase { [ // activity set name is blank here, meaning don't filter the activities '', - // some expected assigned vars of CRM_Core_Smarty template + // Some expected assigned vars of CRM_Core_Smarty template. + // In particular now we will have Meeting in the output. [ 'case' => [ 'clientName' => 'Casey Reportee', @@ -234,58 +312,69 @@ class CRM_Case_XMLProcessor_ReportTest extends CiviCaseTestCase { 0 => [ 'fields' => [ 0 => [ + 'name' => 'Client', 'label' => 'Client', 'value' => 'Casey Reportee', 'type' => 'String', ], 1 => [ + 'name' => 'Activity Type', 'label' => 'Activity Type', 'value' => 'Open Case', 'type' => 'String', ], 2 => [ + 'name' => 'Subject', 'label' => 'Subject', 'value' => 'Case Subject', 'type' => 'Memo', ], 3 => [ + 'name' => 'Created By', 'label' => 'Created By', // data providers run before everything, so update this later 'value' => 'placeholder', 'type' => 'String', ], 4 => [ + 'name' => 'Reported By', 'label' => 'Reported By', // see above - need to update this later 'value' => 'placeholder', 'type' => 'String', ], 5 => [ + 'name' => 'Medium', 'label' => 'Medium', 'value' => 'Phone', 'type' => 'String', ], 6 => [ + 'name' => 'Location', 'label' => 'Location', 'value' => NULL, 'type' => 'String', ], 7 => [ + 'name' => 'Date and Time', 'label' => 'Date and Time', 'value' => '2019-11-14 00:00:00', 'type' => 'Date', ], 8 => [ + 'name' => 'Details', 'label' => 'Details', 'value' => NULL, 'type' => 'Memo', ], 9 => [ + 'name' => 'Status', 'label' => 'Status', 'value' => 'Completed', 'type' => 'String', ], 10 => [ + 'name' => 'Priority', 'label' => 'Priority', 'value' => 'Normal', 'type' => 'String', @@ -297,53 +386,63 @@ class CRM_Case_XMLProcessor_ReportTest extends CiviCaseTestCase { 1 => [ 'fields' => [ 0 => [ + 'name' => 'Client', 'label' => 'Client', 'value' => 'Casey Reportee', 'type' => 'String', ], 1 => [ + 'name' => 'Activity Type', 'label' => 'Activity Type', 'value' => 'Medical evaluation', 'type' => 'String', ], 2 => [ + 'name' => 'Subject', 'label' => 'Subject', 'value' => '', 'type' => 'Memo', ], 3 => [ + 'name' => 'Created By', 'label' => 'Created By', // see above - need to update this later 'value' => 'placeholder', 'type' => 'String', ], 4 => [ + 'name' => 'Reported By', 'label' => 'Reported By', // see above - need to update this later 'value' => 'placeholder', 'type' => 'String', ], 5 => [ + 'name' => 'Location', 'label' => 'Location', 'value' => NULL, 'type' => 'String', ], 6 => [ + 'name' => 'Date and Time', 'label' => 'Date and Time', 'value' => '2019-11-15 00:00:00', 'type' => 'Date', ], 7 => [ + 'name' => 'Details', 'label' => 'Details', 'value' => NULL, 'type' => 'Memo', ], 8 => [ + 'name' => 'Status', 'label' => 'Status', 'value' => 'Scheduled', 'type' => 'String', ], 9 => [ + 'name' => 'Priority', 'label' => 'Priority', 'value' => 'Normal', 'type' => 'String', @@ -355,53 +454,63 @@ class CRM_Case_XMLProcessor_ReportTest extends CiviCaseTestCase { 2 => [ 'fields' => [ 0 => [ + 'name' => 'Client', 'label' => 'Client', 'value' => 'Casey Reportee', 'type' => 'String', ], 1 => [ + 'name' => 'Activity Type', 'label' => 'Activity Type', 'value' => 'Meeting', 'type' => 'String', ], 2 => [ + 'name' => 'Subject', 'label' => 'Subject', 'value' => 'Test Meeting', 'type' => 'Memo', ], 3 => [ + 'name' => 'Created By', 'label' => 'Created By', // see above - need to update this later 'value' => 'placeholder', 'type' => 'String', ], 4 => [ + 'name' => 'Reported By', 'label' => 'Reported By', // see above - need to update this later 'value' => 'placeholder', 'type' => 'String', ], 5 => [ + 'name' => 'Location', 'label' => 'Location', 'value' => NULL, 'type' => 'String', ], 6 => [ + 'name' => 'Date and Time', 'label' => 'Date and Time', 'value' => '2019-11-14 12:34:56', 'type' => 'Date', ], 7 => [ + 'name' => 'Details', 'label' => 'Details', 'value' => NULL, 'type' => 'Memo', ], 8 => [ + 'name' => 'Status', 'label' => 'Status', 'value' => 'Completed', 'type' => 'String', ], 9 => [ + 'name' => 'Priority', 'label' => 'Priority', 'value' => 'Normal', 'type' => 'String', @@ -481,4 +590,20 @@ class CRM_Case_XMLProcessor_ReportTest extends CiviCaseTestCase { $this->callAPISuccess('CaseType', 'create', $caseType); } + /** + * Add Meeting to the standard timeline. + */ + private function addMeetingToTimeline() { + $caseType = $this->callAPISuccess('CaseType', 'getsingle', ['id' => $this->caseTypeId]); + $activityTypes = $caseType['definition']['activitySets'][0]['activityTypes']; + // Make a copy of the second activity type and change the type. + $activityType = $activityTypes[1]; + $activityType['name'] = 'Meeting'; + $activityType['label'] = 'Meeting'; + + $activityTypes[] = $activityType; + $caseType['definition']['activitySets'][0]['activityTypes'] = $activityTypes; + $this->callAPISuccess('CaseType', 'create', $caseType); + } + }