Files
iTop/tests/php-unit-tests/unitary-tests/application/MenuNodeTest.php

98 lines
2.5 KiB
PHP

<?php
namespace Combodo\iTop\Test\UnitTest\Application;
use Combodo\iTop\Application\WebPage\WebPage;
use Combodo\iTop\Test\UnitTest\ItopDataTestCase;
class MenuNodeTest extends ItopDataTestCase
{
private \UserRequest $oUR;
protected function setUp(): void
{
parent::setUp();
clearstatcache();
$aUserRequestCustomParams = [
'title' => "GABUZOMEU",
'org_id' => $this->CreateOrganization(uniqid())->GetKey(),
];
$this->oUR = $this->CreateUserRequest(666, $aUserRequestCustomParams);
}
public function RenderOQLSearchProvider()
{
$aUseCases = [];
$aValues = [false, true];
foreach ($aValues as $bSearchPane) {
foreach ($aValues as $bSearchOpen) {
foreach ($aValues as $bAutoreload) {
$aUseCases[] = [
'bSearchPane' => $bSearchPane,
'bSearchOpen' => $bSearchOpen,
"bAutoreload" => $bAutoreload,
];
}
}
return $aUseCases;
}
}
/**
* @dataProvider RenderOQLSearchProvider
*/
public function testRenderOQLSearch($bSearchPane, $bSearchOpen, $bAutoreload)
{
$sOql = <<<OQL
SELECT UserRequest
OQL;
$sContent = $this->CallRenderOQLSearch($bSearchPane, $bSearchOpen, $bAutoreload, $sOql);
$this->assertTrue(false !== strpos($sContent, $this->oUR->Get('title')), $sContent);
}
/**
* @covers N°7750 - Bug with OQL set as Shortcut
*/
public function testRenderOQLSearchOqlWithDateFormatOnDeadline()
{
static::StartStopwatchInThePast($this->oUR, 'ttr', 10);
$sOql = <<<OQL
SELECT `UserRequest` FROM UserRequest AS `UserRequest` WHERE (DATE_FORMAT(`UserRequest`.`ttr_escalation_deadline`, '%Y%v') != DATE_FORMAT(NOW(), '%Y%v'))
OQL;
try {
$sContent = $this->CallRenderOQLSearch(true, true, true, $sOql);
$this->assertTrue(false !== strpos($sContent, $this->oUR->Get('title')), $sContent);
} catch (\Exception $e) {
echo($e->getMessage());
$this->fail('Without N°7750 fix Exception raised => TypeError : date(): Argument #2 ($timestamp) must be of type ?int, string given');
}
}
public function CallRenderOQLSearch(bool $bSearchPane, bool $bSearchOpen, bool $bAutoreload, string $sOql): string
{
$sTitle = 'title';
$oPage = new WebPage($sTitle);
if ($bAutoreload) {
$aExtraParams = [
'auto_reload' => "5", //value in seconds
];
} else {
$aExtraParams = [];
}
\OQLMenuNode::RenderOQLSearch($sOql, $sTitle, 'shortcut_XXX', $bSearchPane, $bSearchOpen, $oPage, $aExtraParams, true);
$oResponse = $oPage->GenerateResponse();
return $oResponse->getContent();
}
}