mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-23 10:38:45 +02:00
N°6151 - Allow to select classes on union outside the already selected classes
This commit is contained in:
@@ -115,9 +115,9 @@ class DBUnionSearchTest extends ItopDataTestCase
|
||||
{
|
||||
return [
|
||||
[
|
||||
'sSourceOQL' => "SELECT P1, L1 FROM Person AS P1 JOIN Location AS L1 ON P1.location_id = L1.id WHERE L1.id = 1",
|
||||
'sSourceOQL' => "SELECT P1, L1 FROM Person AS P1 JOIN Location AS L1 ON P1.location_id = L1.id WHERE L1.id = 1",
|
||||
'sClassAlias' => "L1",
|
||||
'sFilterOQL' => "SELECT Location AS L2 WHERE L2.id = 2 UNION SELECT Location AS L3 WHERE L3.id = 3",
|
||||
'sFilterOQL' => "SELECT Location AS L2 WHERE L2.id = 2 UNION SELECT Location AS L3 WHERE L3.id = 3",
|
||||
'sExpected' => "SELECT `P1`, `L1` FROM Person AS `P1` JOIN Location AS `L1` ON `P1`.location_id = `L1`.id WHERE ((`L1`.`id` = 1) AND (`L1`.`id` = 2)) UNION SELECT `P1`, `L1` FROM Person AS `P1` JOIN Location AS `L1` ON `P1`.location_id = `L1`.id WHERE ((`L1`.`id` = 1) AND (`L1`.`id` = 3))",
|
||||
],
|
||||
[
|
||||
@@ -159,4 +159,34 @@ class DBUnionSearchTest extends ItopDataTestCase
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider SetSelectedClassesProvider
|
||||
* @param $sOQL
|
||||
* @param $sSelectedClass
|
||||
*
|
||||
* @return void
|
||||
* @throws \CoreException
|
||||
* @throws \OQLException
|
||||
*/
|
||||
public function testSetSelectedClasses(string $sOQL, array $aSelectedClasses, string $sExpectedOQL)
|
||||
{
|
||||
$oSearch = DBSearch::FromOQL($sOQL);
|
||||
$this->debug($oSearch->ToOQL());
|
||||
$this->debug("Set selected classes to [ ".implode(" ,", $aSelectedClasses)." ]");
|
||||
$oSearch->SetSelectedClasses($aSelectedClasses);
|
||||
$this->debug($oSearch->ToOQL());
|
||||
$this->assertEquals($sExpectedOQL, $oSearch->ToOQL());
|
||||
}
|
||||
|
||||
public function SetSelectedClassesProvider()
|
||||
{
|
||||
return [
|
||||
'N°6151' => [
|
||||
'OQL' => "SELECT P FROM Person AS P JOIN User AS U ON U.contactid = P.id UNION SELECT P FROM Person AS P JOIN User AS U ON U.contactid = P.id",
|
||||
'SelectedClasses' => ['U'],
|
||||
'Expected OQL' => "SELECT `U` FROM Person AS `P` JOIN User AS `U` ON `U`.contactid = `P`.id WHERE 1 UNION SELECT `U` FROM Person AS `P` JOIN User AS `U` ON `U`.contactid = `P`.id WHERE 1",
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user