3 require_once('service/v3/SugarWebServiceUtilv3.php');
4 require_once('tests/service/APIv3Helper.php');
7 class RESTAPI3Test extends Sugar_PHPUnit_Framework_TestCase
11 protected $_lastRawResponse;
13 private static $helperObject;
15 public function setUp()
17 //Reload langauge strings
18 $GLOBALS['app_strings'] = return_application_language($GLOBALS['current_language']);
19 $GLOBALS['app_list_strings'] = return_app_list_strings_language($GLOBALS['current_language']);
20 $GLOBALS['mod_strings'] = return_module_language($GLOBALS['current_language'], 'Accounts');
21 //Create an anonymous user for login purposes/
22 $this->_user = SugarTestUserUtilities::createAnonymousUser();
23 $this->_user->status = 'Active';
24 $this->_user->is_admin = 1;
26 $GLOBALS['current_user'] = $this->_user;
28 self::$helperObject = new APIv3Helper();
31 public function tearDown()
33 if(isset($GLOBALS['listViewDefs'])) unset($GLOBALS['listViewDefs']);
34 if(isset($GLOBALS['viewdefs'])) unset($GLOBALS['viewdefs']);
37 protected function _makeRESTCall($method,$parameters)
39 // specify the REST web service to interact with
40 $url = $GLOBALS['sugar_config']['site_url'].'/service/v3/rest.php';
41 // Open a curl session for making the call
42 $curl = curl_init($url);
43 // set URL and other appropriate options
44 curl_setopt($curl, CURLOPT_URL, $url);
45 curl_setopt($curl, CURLOPT_POST, 1);
46 curl_setopt($curl, CURLOPT_HEADER, 0);
47 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
48 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
49 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
50 curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 );
51 // build the request URL
52 $json = json_encode($parameters);
53 $postArgs = "method=$method&input_type=JSON&response_type=JSON&rest_data=$json";
54 curl_setopt($curl, CURLOPT_POSTFIELDS, $postArgs);
55 // Make the REST call, returning the result
56 $response = curl_exec($curl);
57 // Close the connection
60 $this->_lastRawResponse = $response;
62 // Convert the result from JSON format to a PHP array
63 return json_decode($response,true);
66 protected function _returnLastRawResponse()
68 return "Error in web services call. Response was: {$this->_lastRawResponse}";
71 protected function _login()
73 return $this->_makeRESTCall('login',
77 'user_name' => $this->_user->user_name,
78 'password' => $this->_user->user_hash,
81 'application_name' => 'SugarTestRunner',
82 'name_value_list' => array(),
87 public function testSearchByModule()
89 $result = $this->_login();
90 $session = $result['id'];
92 $seedData = self::$helperObject->populateSeedDataForSearchTest($this->_user->id);
94 $searchModules = array('Accounts','Contacts','Opportunities');
95 $searchString = "UNIT TEST";
99 $results = $this->_makeRESTCall('search_by_module',
101 'session' => $session,
102 'search' => $searchString,
103 'modules' => $searchModules,
105 'max' => $maxResults,
106 'user' => $this->_user->id)
109 $this->assertTrue( self::$helperObject->findBeanIdFromEntryList($results['entry_list'],$seedData[0]['id'],'Accounts') );
110 $this->assertFalse( self::$helperObject->findBeanIdFromEntryList($results['entry_list'],$seedData[1]['id'],'Accounts') );
111 $this->assertTrue( self::$helperObject->findBeanIdFromEntryList($results['entry_list'],$seedData[2]['id'],'Contacts') );
112 $this->assertTrue( self::$helperObject->findBeanIdFromEntryList($results['entry_list'],$seedData[3]['id'],'Opportunities') );
113 $this->assertFalse( self::$helperObject->findBeanIdFromEntryList($results['entry_list'],$seedData[4]['id'],'Opportunities') );
114 $GLOBALS['db']->query("DELETE FROM accounts WHERE name like 'UNIT TEST%' ");
115 $GLOBALS['db']->query("DELETE FROM opportunities WHERE name like 'UNIT TEST%' ");
116 $GLOBALS['db']->query("DELETE FROM contacts WHERE first_name like 'UNIT TEST%' ");
119 public function testSearchByModuleWithReturnFields()
121 $result = $this->_login();
122 $session = $result['id'];
124 $seedData = self::$helperObject->populateSeedDataForSearchTest($this->_user->id);
126 $returnFields = array('name','id','deleted');
127 $searchModules = array('Accounts','Contacts','Opportunities');
128 $searchString = "UNIT TEST";
132 $results = $this->_makeRESTCall('search_by_module',
134 'session' => $session,
135 'search' => $searchString,
136 'modules' => $searchModules,
138 'max' => $maxResults,
139 'user' => $this->_user->id,
140 'selectFields' => $returnFields)
144 $this->assertEquals($seedData[0]['fieldValue'], self::$helperObject->findFieldByNameFromEntryList($results['entry_list'],$seedData[0]['id'],'Accounts', $seedData[0]['fieldName']));
145 $this->assertFalse(self::$helperObject->findFieldByNameFromEntryList($results['entry_list'],$seedData[1]['id'],'Accounts', $seedData[1]['fieldName']));
146 $this->assertEquals($seedData[2]['fieldValue'], self::$helperObject->findFieldByNameFromEntryList($results['entry_list'],$seedData[2]['id'],'Contacts', $seedData[2]['fieldName']));
147 $this->assertEquals($seedData[3]['fieldValue'], self::$helperObject->findFieldByNameFromEntryList($results['entry_list'],$seedData[3]['id'],'Opportunities', $seedData[3]['fieldName']));
148 $this->assertFalse(self::$helperObject->findFieldByNameFromEntryList($results['entry_list'],$seedData[4]['id'],'Opportunities', $seedData[4]['fieldName']));
150 $GLOBALS['db']->query("DELETE FROM accounts WHERE name like 'UNIT TEST%' ");
151 $GLOBALS['db']->query("DELETE FROM opportunities WHERE name like 'UNIT TEST%' ");
152 $GLOBALS['db']->query("DELETE FROM contacts WHERE first_name like 'UNIT TEST%' ");
155 public function testGetServerInformation()
157 require('sugar_version.php');
159 $result = $this->_login();
160 $session = $result['id'];
162 $result = $this->_makeRESTCall('get_server_info',array());
164 $this->assertEquals($sugar_version, $result['version'],'Unable to get server information');
165 $this->assertEquals($sugar_flavor, $result['flavor'],'Unable to get server information');
168 public function testGetModuleList()
170 $result = $this->_login();
171 $session = $result['id'];
173 $account = new Account();
174 $account->id = uniqid();
175 $account->new_with_id = TRUE;
176 $account->name = "Test " . $account->id;
179 $whereClause = "accounts.name='{$account->name}'";
180 $module = 'Accounts';
183 $returnFields = array('name');
184 $result = $this->_makeRESTCall('get_entry_list', array($session, $module, $whereClause, $orderBy,$offset, $returnFields));
186 $this->assertEquals($account->id, $result['entry_list'][0]['id'],'Unable to retrieve account list during search.');
188 $GLOBALS['db']->query("DELETE FROM accounts WHERE id = '{$account->id}'");
192 public function testLogin()
194 $result = $this->_login();
195 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
198 public static function _multipleModuleLayoutProvider()
202 'module' => array('Accounts','Contacts'),
203 'type' => array('default'),
204 'view' => array('list'),
205 'expected_file' => array(
206 'Accounts' => array( 'default' => array('list' => 'modules/Accounts/metadata/listviewdefs.php')),
207 'Contacts' => array( 'default' => array('list' => 'modules/Contacts/metadata/listviewdefs.php')))
210 'module' => array('Accounts','Contacts'),
211 'type' => array('default'),
212 'view' => array('list','detail'),
213 'expected_file' => array(
216 'list' => 'modules/Accounts/metadata/listviewdefs.php',
217 'detail' => 'modules/Accounts/metadata/detailviewdefs.php')),
220 'list' => 'modules/Contacts/metadata/listviewdefs.php',
221 'detail' => 'modules/Contacts/metadata/detailviewdefs.php'))
227 * @dataProvider _multipleModuleLayoutProvider
229 public function testGetMultipleModuleLayout($a_module, $a_type, $a_view, $a_expected_file)
231 $result = $this->_login();
232 $session = $result['id'];
234 $results = $this->_makeRESTCall('get_module_layout',
236 'session' => $session,
237 'module' => $a_module,
242 foreach ($results as $module => $moduleResults )
244 foreach ($moduleResults as $type => $viewResults)
246 foreach ($viewResults as $view => $result)
248 $expected_file = $a_expected_file[$module][$type][$view];
249 if ( is_file('custom' . DIRECTORY_SEPARATOR . $expected_file) )
250 require('custom' . DIRECTORY_SEPARATOR . $expected_file);
252 require($expected_file);
255 $expectedResults = $listViewDefs[$module];
257 $expectedResults = $viewdefs[$module][ucfirst($view) .'View' ];
259 $this->assertEquals(md5(serialize($expectedResults)), md5(serialize($result)), "Unable to retrieve module layout: module {$module}, type $type, view $view");
265 public static function _moduleLayoutProvider()
268 array('module' => 'Accounts','type' => 'default', 'view' => 'list','expected_file' => 'modules/Accounts/metadata/listviewdefs.php' ),
269 array('module' => 'Accounts','type' => 'default', 'view' => 'edit','expected_file' => 'modules/Accounts/metadata/editviewdefs.php' ),
270 array('module' => 'Accounts','type' => 'default', 'view' => 'detail','expected_file' => 'modules/Accounts/metadata/detailviewdefs.php' ),
275 * @dataProvider _moduleLayoutProvider
277 public function testGetModuleLayout($module, $type, $view, $expected_file)
279 $result = $this->_login();
280 $session = $result['id'];
282 $result = $this->_makeRESTCall('get_module_layout',
284 'session' => $session,
285 'module' => array($module),
286 'type' => array($type),
287 'view' => array($view))
290 if ( is_file('custom' . DIRECTORY_SEPARATOR . $expected_file) )
291 require('custom' . DIRECTORY_SEPARATOR . $expected_file);
293 require($expected_file);
296 $expectedResults = $listViewDefs[$module];
298 $expectedResults = $viewdefs[$module][ucfirst($view) .'View' ];
300 $a_expectedResults = array();
301 $a_expectedResults[$module][$type][$view] = $expectedResults;
303 $this->assertEquals(md5(serialize($a_expectedResults)), md5(serialize($result)), "Unable to retrieve module layout: module {$module}, type $type, view $view");
307 * @dataProvider _moduleLayoutProvider
309 public function testGetModuleLayoutMD5($module, $type, $view, $expected_file)
311 $result = $this->_login();
312 $session = $result['id'];
314 $fullResult = $this->_makeRESTCall('get_module_layout_md5',
316 'session' => $session,
317 'module' => array($module),
318 'type' => array($type),
319 'view' => array($view) )
321 $result = $fullResult['md5'];
322 if ( is_file('custom' . DIRECTORY_SEPARATOR . $expected_file) )
323 require('custom' . DIRECTORY_SEPARATOR . $expected_file);
325 require($expected_file);
328 $expectedResults = $listViewDefs[$module];
330 $expectedResults = $viewdefs[$module][ucfirst($view) .'View' ];
332 $a_expectedResults = array();
333 $a_expectedResults[$module][$type][$view] = $expectedResults;
335 $this->assertEquals(md5(serialize($expectedResults)), $result[$module][$type][$view], "Unable to retrieve module layout md5: module {$module}, type $type, view $view");
339 public function testGetAvailableModules()
341 $this->markTestSkipped('Will be updated week of June 21, 2010');
343 $result = $this->_login();
344 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
345 $session = $result['id'];
347 $fullResult = $this->_makeRESTCall('get_available_modules', array('session' => $session, 'filter' => 'all' ));
348 $this->assertTrue(in_array('ACLFields', $fullResult['modules']), "Unable to get all available modules");
349 $this->assertTrue(in_array('Schedulers', $fullResult['modules']), "Unable to get all available modules");
350 $this->assertTrue(in_array('Roles', $fullResult['modules']), "Unable to get all available modules");
352 $sh = new SugarWebServiceUtilv3();
354 $mobileResult = $this->_makeRESTCall('get_available_modules', array('session' => $session, 'filter' => 'mobile' ));
355 $mobileResultExpected = $sh->get_visible_mobile_modules($fullResult['modules']);
356 $mobileResultExpected = md5(serialize(array('modules' => $mobileResultExpected)));
357 $mobileResult = md5(serialize($mobileResult));
358 $this->assertEquals($mobileResultExpected, $mobileResult, "Unable to get all visible mobile modules");
360 $defaultResult = $this->_makeRESTCall('get_available_modules', array('session' => $session, 'filter' => 'default' ));
361 $defaultResult = md5(serialize($defaultResult['modules']));
362 $defaultResultExpected = $sh->get_visible_modules($fullResult['modules']);
363 $defaultResultExpected = md5(serialize($defaultResultExpected));
364 $this->assertEquals($defaultResultExpected, $defaultResult, "Unable to get all visible default modules");
368 public function testGetVardefsMD5()
370 $GLOBALS['reload_vardefs'] = TRUE;
371 $result = $this->_login();
372 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
373 $session = $result['id'];
375 //Test a regular module
376 $fullResult = $this->_makeRESTCall('get_module_fields_md5', array('session' => $session, 'module' => 'Accounts' ));
377 $result = $fullResult['Accounts'];
379 $soapHelper = new SugarWebServiceUtilv3();
380 $actualVardef = $soapHelper->get_return_module_fields($a,'Accounts','');
381 $actualMD5 = md5(serialize($actualVardef));
382 $this->assertEquals($actualMD5, $result, "Unable to retrieve vardef md5.");
385 $result = $this->_makeRESTCall('get_module_fields_md5', array('session' => $session, 'module' => 'BadModule' ));
386 $this->assertTrue($result['name'] == 'Module Does Not Exist');
387 unset($GLOBALS['reload_vardefs']);
390 public function testAddNewAccountAndThenDeleteIt()
392 $result = $this->_login();
393 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
394 $session = $result['id'];
396 $result = $this->_makeRESTCall('set_entry',
398 'session' => $session,
399 'module' => 'Accounts',
400 'name_value_list' => array(
401 array('name' => 'name', 'value' => 'New Account'),
402 array('name' => 'description', 'value' => 'This is an account created from a REST web services call'),
407 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
409 $accountId = $result['id'];
411 // verify record was created
412 $result = $this->_makeRESTCall('get_entry',
414 'session' => $session,
415 'module' => 'Accounts',
420 $this->assertEquals($result['entry_list'][0]['id'],$accountId,$this->_returnLastRawResponse());
423 $result = $this->_makeRESTCall('set_entry',
425 'session' => $session,
426 'module' => 'Accounts',
427 'name_value_list' => array(
428 array('name' => 'id', 'value' => $accountId),
429 array('name' => 'deleted', 'value' => '1'),
434 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
436 // try to retrieve again to validate it is deleted
437 $result = $this->_makeRESTCall('get_entry',
439 'session' => $session,
440 'module' => 'Accounts',
445 $this->assertTrue(!empty($result['entry_list'][0]['id']) && $result['entry_list'][0]['id'] != -1,$this->_returnLastRawResponse());
446 $this->assertEquals($result['entry_list'][0]['name_value_list'][0]['name'],'warning',$this->_returnLastRawResponse());
447 $this->assertEquals($result['entry_list'][0]['name_value_list'][0]['value'],"Access to this object is denied since it has been deleted or does not exist",$this->_returnLastRawResponse());
448 $this->assertEquals($result['entry_list'][0]['name_value_list'][1]['name'],'deleted',$this->_returnLastRawResponse());
449 $this->assertEquals($result['entry_list'][0]['name_value_list'][1]['value'],1,$this->_returnLastRawResponse());
452 public function testRelateAccountToTwoContacts()
454 $result = $this->_login();
455 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
456 $session = $result['id'];
458 $result = $this->_makeRESTCall('set_entry',
460 'session' => $session,
461 'module' => 'Accounts',
462 'name_value_list' => array(
463 array('name' => 'name', 'value' => 'New Account'),
464 array('name' => 'description', 'value' => 'This is an account created from a REST web services call'),
469 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
471 $accountId = $result['id'];
473 $result = $this->_makeRESTCall('set_entry',
475 'session' => $session,
476 'module' => 'Contacts',
477 'name_value_list' => array(
478 array('name' => 'last_name', 'value' => 'New Contact 1'),
479 array('name' => 'description', 'value' => 'This is a contact created from a REST web services call'),
484 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
486 $contactId1 = $result['id'];
488 $result = $this->_makeRESTCall('set_entry',
490 'session' => $session,
491 'module' => 'Contacts',
492 'name_value_list' => array(
493 array('name' => 'last_name', 'value' => 'New Contact 2'),
494 array('name' => 'description', 'value' => 'This is a contact created from a REST web services call'),
499 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
501 $contactId2 = $result['id'];
503 // now relate them together
504 $result = $this->_makeRESTCall('set_relationship',
506 'session' => $session,
507 'module' => 'Accounts',
508 'module_id' => $accountId,
509 'link_field_name' => 'contacts',
510 'related_ids' => array($contactId1,$contactId2),
514 $this->assertEquals($result['created'],1,$this->_returnLastRawResponse());
516 // check the relationship
517 $result = $this->_makeRESTCall('get_relationships',
519 'session' => $session,
520 'module' => 'Accounts',
521 'module_id' => $accountId,
522 'link_field_name' => 'contacts',
523 'related_module_query' => '',
524 'related_fields' => array('last_name','description'),
525 'related_module_link_name_to_fields_array' => array(),
530 $returnedValues = array();
531 $returnedValues[] = $result['entry_list'][0]['name_value_list']['last_name']['value'];
532 $returnedValues[] = $result['entry_list'][1]['name_value_list']['last_name']['value'];
535 $this->assertContains('New Contact 1',$returnedValues,$this->_returnLastRawResponse());
536 $this->assertContains('New Contact 2',$returnedValues,$this->_returnLastRawResponse());
542 public function testOrderByClauseOfGetRelationship()
544 $result = $this->_login();
545 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
546 $session = $result['id'];
548 $result = $this->_makeRESTCall('set_entry',
550 'session' => $session,
551 'module' => 'Accounts',
552 'name_value_list' => array(
553 array('name' => 'name', 'value' => 'New Account'),
554 array('name' => 'description', 'value' => 'This is an account created from a REST web services call'),
559 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
561 $accountId = $result['id'];
563 $result = $this->_makeRESTCall('set_entry',
565 'session' => $session,
566 'module' => 'Contacts',
567 'name_value_list' => array(
568 array('name' => 'last_name', 'value' => 'New Contact 1'),
569 array('name' => 'description', 'value' => 'This is a contact created from a REST web services call'),
574 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
576 $contactId1 = $result['id'];
578 $result = $this->_makeRESTCall('set_entry',
580 'session' => $session,
581 'module' => 'Contacts',
582 'name_value_list' => array(
583 array('name' => 'last_name', 'value' => 'New Contact 2'),
584 array('name' => 'description', 'value' => 'This is a contact created from a REST web services call'),
589 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
591 $contactId2 = $result['id'];
593 // now relate them together
594 $result = $this->_makeRESTCall('set_relationship',
596 'session' => $session,
597 'module' => 'Accounts',
598 'module_id' => $accountId,
599 'link_field_name' => 'contacts',
600 'related_ids' => array($contactId1,$contactId2),
604 $this->assertEquals($result['created'],1,$this->_returnLastRawResponse());
606 // check the relationship
607 $result = $this->_makeRESTCall('get_relationships',
609 'session' => $session,
610 'module' => 'Accounts',
611 'module_id' => $accountId,
612 'link_field_name' => 'contacts',
613 'related_module_query' => '',
614 'related_fields' => array('last_name','description'),
615 'related_module_link_name_to_fields_array' => array(),
617 'order_by' => 'last_name',
621 $this->assertEquals($result['entry_list'][0]['name_value_list']['last_name']['value'],'New Contact 1',$this->_returnLastRawResponse());
622 $this->assertEquals($result['entry_list'][1]['name_value_list']['last_name']['value'],'New Contact 2',$this->_returnLastRawResponse());
625 public static function _subpanelLayoutProvider()
629 'module' => 'Contacts',
631 'view' => 'subpanel',
635 'type' => 'wireless',
636 'view' => 'subpanel',
642 * @dataProvider _subpanelLayoutProvider
644 public function testGetSubpanelLayout($module, $type, $view)
646 $result = $this->_login();
647 $session = $result['id'];
649 $results = $this->_makeRESTCall('get_module_layout',
651 'session' => $session,
652 'module' => array($module),
653 'type' => array($type),
654 'view' => array($view))
657 $this->assertTrue(isset($results[$module][$type][$view]), "Unable to get subpanel defs");
660 public function testGetLastViewed()
662 $result = $this->_login();
663 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
664 $session = $result['id'];
666 $testModule = 'Accounts';
667 $testModuleID = uniqid();
669 $this->_createTrackerEntry($testModule,$testModuleID);
671 $results = $this->_makeRESTCall('get_last_viewed',
673 'session' => $session,
674 'modules' => array($testModule),
679 foreach ($results as $entry)
681 if($entry['item_id'] == $testModuleID)
688 $this->assertTrue($found, "Unable to get last viewed modules");
691 private function _createTrackerEntry($module, $id,$summaryText = "UNIT TEST SUMMARY")
693 $trackerManager = TrackerManager::getInstance();
694 $timeStamp = gmdate($GLOBALS['timedate']->get_db_date_time_format());
695 $monitor = $trackerManager->getMonitor('tracker');
697 $monitor->setValue('action', 'detail');
698 $monitor->setValue('user_id', $this->_user->id);
699 $monitor->setValue('module_name', $module);
700 $monitor->setValue('date_modified', $timeStamp);
701 $monitor->setValue('visible', true);
702 $monitor->setValue('item_id', $id);
703 $monitor->setValue('item_summary', $summaryText);
704 $trackerManager->saveMonitor($monitor, true, true);
707 public function testGetUpcomingActivities()
709 $result = $this->_login();
710 $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse());
711 $session = $result['id'];
712 $expected = $this->_createUpcomingActivities(); //Seed the data.
713 $results = $this->_makeRESTCall('get_upcoming_activities',
715 'session' => $session,
719 $this->assertEquals($expected[0] ,$results[0]['id'] , "Unable to get upcoming activities");
720 $this->assertEquals($expected[1] ,$results[1]['id'] , "Unable to get upcoming activities");
722 $this->_removeUpcomingActivities();
725 private function _removeUpcomingActivities()
727 $GLOBALS['db']->query("DELETE FROM calls where name = 'UNIT TEST'");
728 $GLOBALS['db']->query("DELETE FROM tasks where name = 'UNIT TEST'");
731 private function _createUpcomingActivities()
733 $GLOBALS['current_user']->setPreference('datef','Y-m-d') ;
734 $GLOBALS['current_user']->setPreference('timef','H:i') ;
736 $date1 = $GLOBALS['timedate']->to_display_date_time(gmdate("Y-m-d H:i:s", (gmmktime() + (3600 * 24 * 2) ) ),true,true, $GLOBALS['current_user']) ; //Two days from today
737 $date2 = $GLOBALS['timedate']->to_display_date_time(gmdate("Y-m-d H:i:s", (gmmktime() + (3600 * 24 * 4) ) ),true,true, $GLOBALS['current_user']) ; //Two days from today
742 $c->new_with_id = TRUE;
743 $c->status = 'Not Planned';
744 $c->date_start = $date1;
745 $c->name = "UNIT TEST";
746 $c->assigned_user_id = $this->_user->id;
752 $c->new_with_id = TRUE;
753 $c->status = 'Planned';
754 $c->date_start = $date1;
755 $c->name = "UNIT TEST";
756 $c->assigned_user_id = $this->_user->id;
762 $t->new_with_id = TRUE;
763 $t->status = 'Not Started';
764 $t->date_due = $date2;
765 $t->name = "UNIT TEST";
766 $t->assigned_user_id = $this->_user->id;
769 return array($callID, $taskID);