Merge pull request #12178 from jitendrapurohit/membership-4
[civicrm-core.git] / tests / phpunit / api / v3 / ActionScheduleTest.php
1 <?php
2 /**
3 * @file
4 * File for the TestActionSchedule class
5 *
6 * (PHP 5)
7 *
8 * CiviCRM is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Affero General Public License
10 * as published by the Free Software Foundation; either version 3 of
11 * the License, or (at your option) any later version.
12 *
13 * CiviCRM is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public
19 * License along with this program. If not, see
20 * <http://www.gnu.org/licenses/>.
21 */
22
23 /**
24 * Include class definitions
25 */
26
27 /**
28 * Test APIv3 civicrm_action_schedule functions
29 *
30 * @package CiviCRM_APIv3
31 * @subpackage API_ActionSchedule
32 * @group headless
33 */
34 class api_v3_ActionScheduleTest extends CiviUnitTestCase {
35 protected $_params;
36 protected $_params2;
37 protected $_entity = 'action_schedule';
38 protected $_apiversion = 3;
39
40 /**
41 * Test setup for every test.
42 */
43 public function setUp() {
44 parent::setUp();
45 $this->useTransaction(TRUE);
46 }
47
48 /**
49 * Test simple create action schedule.
50 */
51 public function testSimpleActionScheduleCreate() {
52 $oldCount = CRM_Core_DAO::singleValueQuery('select count(*) from civicrm_action_schedule');
53 $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
54 $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts);
55 $title = "simpleActionSchedule" . substr(sha1(rand()), 0, 7);
56 $params = array(
57 'title' => $title,
58 'recipient' => $assigneeID,
59 'limit_to' => 1,
60 'entity_value' => 'Meeting',
61 'entity_status' => 'Scheduled',
62 'is_active' => 1,
63 'record_activity' => 1,
64 'start_action_date' => 'activity_date_time',
65 'mapping_id' => CRM_Activity_ActionMapping::ACTIVITY_MAPPING_ID,
66 );
67 $actionSchedule = $this->callAPISuccess('action_schedule', 'create', $params);
68 $this->assertTrue(is_numeric($actionSchedule['id']));
69 $this->assertTrue($actionSchedule['id'] > 0);
70 $newCount = CRM_Core_DAO::singleValueQuery('select count(*) from civicrm_action_schedule');
71 $this->assertEquals($oldCount + 1, $newCount);
72 }
73
74 /**
75 * Check if required fields are not passed.
76 */
77 public function testActionScheduleCreateWithoutRequired() {
78 $params = array(
79 'subject' => 'this case should fail',
80 'scheduled_date_time' => date('Ymd'),
81 );
82 $this->callAPIFailure('activity', 'create', $params);
83 }
84
85 /**
86 * Test create with scheduled dates.
87 */
88 public function testActionScheduleWithScheduledDatesCreate() {
89 $oldCount = CRM_Core_DAO::singleValueQuery('select count(*) from civicrm_action_schedule');
90 $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
91 $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts);
92 $title = "simpleActionSchedule" . substr(sha1(rand()), 0, 7);
93 $params = array(
94 'title' => $title,
95 'recipient' => $assigneeID,
96 'limit_to' => 1,
97 'entity_value' => 'Meeting',
98 'entity_status' => 'Scheduled',
99 'is_active' => 1,
100 'record_activity' => 1,
101 'mapping_id' => CRM_Activity_ActionMapping::ACTIVITY_MAPPING_ID,
102 'start_action_offset' => 3,
103 'start_action_unit' => 'day',
104 'start_action_condition' => 'before',
105 'start_action_date' => 'activity_date_time',
106 'is_repeat' => 1,
107 'repetition_frequency_unit' => 'day',
108 'repetition_frequency_interval' => 3,
109 'end_frequency_unit' => 'hour',
110 'end_frequency_interval' => 0,
111 'end_action' => 'before',
112 'end_date' => 'activity_date_time',
113 'body_html' => 'Test description',
114 'subject' => 'Test subject',
115 );
116 $actionSchedule = $this->callAPISuccess('action_schedule', 'create', $params);
117 $this->assertTrue(is_numeric($actionSchedule['id']));
118 $this->assertTrue($actionSchedule['id'] > 0);
119 $this->assertEquals($actionSchedule['values'][$actionSchedule['id']]['start_action_offset'][0], $params['start_action_offset']);
120 $newCount = CRM_Core_DAO::singleValueQuery('select count(*) from civicrm_action_schedule');
121 $this->assertEquals($oldCount + 1, $newCount);
122
123 }
124
125 }