* */ namespace Combodo\iTop\Test\UnitTest\Application\Search; use Combodo\iTop\Application\Search\SearchForm; use Combodo\iTop\Test\UnitTest\ItopDataTestCase; use Exception; class SearchFormTest extends ItopDataTestCase { /** * @throws Exception */ protected function setUp() { parent::setUp(); require_once(APPROOT."sources/application/search/searchform.class.inc.php"); } /** * @throws \OQLException */ public function testGetFields() { $oSearchForm = new SearchForm(); $aFields = $oSearchForm->GetFields('Contact', 'Contact'); $this->debug(json_encode($aFields, JSON_PRETTY_PRINT)); $this->assertCount(7, $aFields['zlist']); $oSearch = \DBSearch::FromOQL("SELECT Contact AS C WHERE C.status = 'active'"); $aFields = $oSearchForm->GetFields($oSearch->GetClass(), $oSearch->GetClassAlias()); $this->debug(json_encode($aFields, JSON_PRETTY_PRINT)); } /** * @dataProvider GetCriterionProvider * * @param $sOQL * @param $iOrCount * */ public function testGetCriterion($sOQL, $iOrCount) { $oSearchForm = new SearchForm(); try { $aCriterion = $oSearchForm->GetCriterion(\DBSearch::FromOQL($sOQL)); } catch (\OQLException $e) { $this->assertTrue(false); return; } $aRes = array('base_oql' => $sOQL, 'criterion' => $aCriterion); $this->debug(json_encode($aRes)); $this->debug($sOQL); $this->debug(json_encode($aCriterion, JSON_PRETTY_PRINT)); $this->assertCount($iOrCount, $aCriterion['or']); } public function GetCriterionProvider() { return array( array('OQL' => "SELECT Contact", 1), array('OQL' => "SELECT Contact WHERE status = 'active'", 1), array('OQL' => "SELECT Contact AS C WHERE C.status = 'active'", 1), array('OQL' => "SELECT Contact WHERE status = 'active' AND name LIKE 'toto%'", 1), array('OQL' => "SELECT Contact WHERE status = 'active' AND org_id = 3", 1), array('OQL' => "SELECT Contact WHERE status IN ('active', 'inactive')", 1), array('OQL' => "SELECT Contact WHERE status = 'active' OR name LIKE 'toto%'", 2), array('OQL' => "SELECT UserRequest WHERE DATE_SUB(NOW(), INTERVAL 14 DAY) < start_date", 1), array('OQL' => "SELECT UserRequest WHERE start_date > '2017-01-01' AND '2018-01-01' >= start_date", 1), array('OQL' => "SELECT UserRequest WHERE start_date > '2017-01-01' AND status = 'active' AND org_id = 3 AND '2018-01-01' >= start_date", 1), ); } }