/** * Execute the default schedule, without any special recipient selections. * * @dataProvider createTestCases * * @param string $targetDate * @param string $setupFuncs * @param array $expectMessages * * @throws \Exception */ public function testDefault($targetDate, $setupFuncs, $expectMessages) { $this->targetDate = $targetDate; foreach (explode(' ', $setupFuncs) as $setupFunc) { $this->{$setupFunc}(); } $this->schedule->save(); $actualMessages = array(); foreach ($this->cronTimes() as $time) { \CRM_Utils_Time::setTime($time); $this->callAPISuccess('job', 'send_reminder', array()); foreach ($this->mut->getAllMessages('ezc') as $message) { /** @var \ezcMail $message */ $simpleMessage = array('time' => $time, 'to' => \CRM_Utils_Array::collect('email', $message->to), 'subject' => $message->subject); sort($simpleMessage['to']); $actualMessages[] = $simpleMessage; $this->mut->clearMessages(); } } $errorText = "Incorrect messages: " . print_r(array('actualMessages' => $actualMessages, 'expectMessages' => $expectMessages), 1); $this->assertEquals(count($expectMessages), count($actualMessages), $errorText); usort($expectMessages, array(__CLASS__, 'compareSimpleMsgs')); usort($actualMessages, array(__CLASS__, 'compareSimpleMsgs')); foreach ($expectMessages as $offset => $expectMessage) { $actualMessage = $actualMessages[$offset]; $this->assertApproxEquals(strtotime($expectMessage['time']), strtotime($actualMessage['time']), $this->dateTolerance, $errorText); if (isset($expectMessage['to'])) { sort($expectMessage['to']); $this->assertEquals($expectMessage['to'], $actualMessage['to'], $errorText); } if (isset($expectMessage['subject'])) { $this->assertRegExp($expectMessage['subject'], $actualMessage['subject'], $errorText); } } }
/** * Function to add the schedules reminders in the db * * @param array $params (reference ) an assoc array of name/value pairs * @param array $ids the array that holds all the db ids * * @return object CRM_Core_DAO_ActionSchedule * @access public * @static * */ static function add(&$params, $ids = array()) { $actionSchedule = new CRM_Core_DAO_ActionSchedule(); $actionSchedule->copyValues($params); return $actionSchedule->save(); }