setPreference('datef', "d/m/Y"); $current_user->setPreference('timef', "H:i:s"); $current_user->setPreference('timezone', "Europe/Rome"); // new object to avoid TZ caching $this->timedate = new TimeDate(); $this->meetingsArr = array(); // Create a Bunch of Meetings $d = 12; $cnt = 0; while ($d < 15) { $this->meetingsArr[$cnt] = new Meeting(); $this->meetingsArr[$cnt]->name = 'Bug45287 Meeting ' . ($cnt + 1); $this->meetingsArr[$cnt]->date_start = $this->timedate->to_display_date_time(gmdate("Y-m-d H:i:s", mktime(10+$cnt, 30, 00, 7, $d, 2011))); $this->meetingsArr[$cnt]->save(); $d++; $cnt++; } $this->searchDefs = array("Meetings" => array("layout" => array("basic_search" => array("name" => array("name" => "name", "default" => true, "width" => "10%", ), "date_start" => array("name" => "date_start", "default" => true, "width" => "10%", "type" => "datetimecombo", ), ), ), ), ); $this->searchFields = array("Meetings" => array("name" => array("query_type" => "default"), "date_start" => array("query_type" => "default"), "range_date_start" => array("query_type" => "default", "enable_range_search" => 1, "is_date_field" => 1), "range_date_start" => array("query_type" => "default", "enable_range_search" => 1, "is_date_field" => 1), "start_range_date_start" => array("query_type" => "default", "enable_range_search" => 1, "is_date_field" => 1), "end_range_date_start" => array("query_type" => "default", "enable_range_search" => 1, "is_date_field" => 1), ), ); } public function tearDown() { foreach ($this->meetingsArr as $m) { $GLOBALS['db']->query('DELETE FROM meetings WHERE id = \'' . $m->id . '\' '); } unset($m); unset($this->meetingsArr); unset($this->searchDefs); unset($this->searchFields); unset($this->timedate); SugarTestUserUtilities::removeAllCreatedAnonymousUsers(); } public function testRetrieveByExactDate() { global $current_user; $_REQUEST = $_POST = array("module" => "Meetings", "action" => "index", "searchFormTab" => "basic_search", "query" => "true", "name_basic" => "", "current_user_only_basic" => "0", "favorites_only_basic" => "0", "open_only_basic" => "0", "date_start_basic_range_choice" => "=", "range_date_start_basic" => "14/07/2011", "start_range_date_start_basic" => "", "end_range_date_start_basic" => "", "button" => "Search", ); $srch = new SearchForm(new Meeting(), "Meetings"); $srch->setup($this->searchDefs, $this->searchFields, ""); $srch->populateFromRequest(); $w = $srch->generateSearchWhere(); // Due to daylight savings, I cannot hardcode intervals... $GMTDates = $this->timedate->getDayStartEndGMT("2011-07-14"); // Current User is on GMT+2. // Asking for meeting of 14 July 2011, I expect to search (GMT) from 13 July at 22:00 until 14 July at 22:00 (excluded) $expectedWhere = "meetings.date_start >= " . $GLOBALS['db']->convert($GLOBALS['db']->quoted($GMTDates['start']), 'datetime') . " AND meetings.date_start <= " . $GLOBALS['db']->convert($GLOBALS['db']->quoted($GMTDates['end']), 'datetime'); $this->assertContains($expectedWhere, $w[0]); } public function testRetrieveByDaterange() { global $current_user; $_REQUEST = $_POST = array("module" => "Meetings", "action" => "index", "searchFormTab" => "basic_search", "query" => "true", "name_basic" => "", "current_user_only_basic" => "0", "favorites_only_basic" => "0", "open_only_basic" => "0", "date_start_basic_range_choice" => "between", "range_date_start_basic" => "", "start_range_date_start_basic" => "13/07/2011", "end_range_date_start_basic" => "14/07/2011", "button" => "Search", ); $srch = new SearchForm(new Meeting(), "Meetings"); $srch->setup($this->searchDefs, $this->searchFields, ""); $srch->populateFromRequest(); $w = $srch->generateSearchWhere(); // Due to daylight savings, I cannot hardcode intervals... $GMTDatesStart = $this->timedate->getDayStartEndGMT("2011-07-13"); $GMTDatesEnd = $this->timedate->getDayStartEndGMT("2011-07-14"); // Current User is on GMT+2. // Asking for meeting between 13 and 14 July 2011, I expect to search (GMT) from 12 July at 22:00 until 14 July at 22:00 (excluded) $expectedWhere = "meetings.date_start >= " . $GLOBALS['db']->convert($GLOBALS['db']->quoted($GMTDatesStart['start']), 'datetime') . " AND meetings.date_start <= " . $GLOBALS['db']->convert($GLOBALS['db']->quoted($GMTDatesEnd['end']), 'datetime'); $this->assertContains($expectedWhere, $w[0]); } }