mirror of
https://github.com/Combodo/iTop.git
synced 2026-03-02 07:34:13 +01:00
141 lines
4.7 KiB
PHP
141 lines
4.7 KiB
PHP
<?php
|
|
/*
|
|
* @copyright Copyright (C) 2010-2023 Combodo SARL
|
|
* @license http://opensource.org/licenses/AGPL-3.0
|
|
*/
|
|
|
|
|
|
namespace Combodo\iTop\Test\UnitTest\Core;
|
|
|
|
use Combodo\iTop\Test\UnitTest\ItopDataTestCase;
|
|
|
|
/**
|
|
* Tests of the ormCaseLog class
|
|
*
|
|
* @covers \ormCaseLog
|
|
*
|
|
* @runTestsInSeparateProcesses
|
|
* @preserveGlobalState disabled
|
|
* @backupGlobals disabled
|
|
*/
|
|
class ormCaseLogServiceTest extends ItopDataTestCase
|
|
{
|
|
public function setUp() :void{
|
|
parent::setUp(); // TODO: Change the autogenerated stub
|
|
require_once __DIR__ . "/OrmCaseLogExtensionForTest.php";
|
|
require_once APPROOT . "core/ormcaselogservice.inc.php";
|
|
}
|
|
|
|
public function LoadCaseLogExtensionsProvider() {
|
|
$sNamespace = 'Combodo\\iTop\\Test\\';
|
|
$sExtensionClass1 = $sNamespace . \FakeOrmCaseLogExtension1::class;
|
|
$sExtensionClass2 = $sNamespace . \FakeOrmCaseLogExtension2::class;
|
|
$sExtensionClass3 = $sNamespace . \FakeOrmCaseLogExtension3::class;
|
|
|
|
return [
|
|
'default conf' => [
|
|
'aClassesForInterfaceOrmCaseLog' => [],
|
|
'ormcaselog_extension_classes' => null,
|
|
'aExpectedOrmCaseLogExtensions' => [],
|
|
],
|
|
'default conf with extension implemented' => [
|
|
'aClassesForInterfaceOrmCaseLog' => [$sExtensionClass1],
|
|
'ormcaselog_extension_classes' => null,
|
|
'aExpectedOrmCaseLogExtensions' => [],
|
|
],
|
|
'conf but not extension implemented' => [
|
|
'aClassesForInterfaceOrmCaseLog' => [],
|
|
'ormcaselog_extension_classes' => [ $sExtensionClass1 ],
|
|
'aExpectedOrmCaseLogExtensions' => [],
|
|
],
|
|
'one extension configured/implemented' => [
|
|
'aClassesForInterfaceOrmCaseLog' => [$sExtensionClass1],
|
|
'ormcaselog_extension_classes' => [ $sExtensionClass1 ],
|
|
'aExpectedOrmCaseLogExtensions' => [$sExtensionClass1],
|
|
],
|
|
'one extension configured' => [
|
|
'aClassesForInterfaceOrmCaseLog' => [
|
|
$sExtensionClass3,
|
|
$sExtensionClass1,
|
|
$sExtensionClass2,
|
|
],
|
|
'ormcaselog_extension_classes' => [ $sExtensionClass1 ],
|
|
'aExpectedOrmCaseLogExtensions' => [$sExtensionClass1],
|
|
],
|
|
'3 sorted extensions' => [
|
|
'aClassesForInterfaceOrmCaseLog' => [
|
|
$sExtensionClass3,
|
|
$sExtensionClass1,
|
|
$sExtensionClass2,
|
|
],
|
|
'ormcaselog_extension_classes' => [
|
|
$sExtensionClass1,
|
|
$sExtensionClass2,
|
|
$sExtensionClass3
|
|
],
|
|
'aExpectedOrmCaseLogExtensions' => [
|
|
$sExtensionClass1,
|
|
$sExtensionClass2,
|
|
$sExtensionClass3
|
|
],
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider LoadCaseLogExtensionsProvider
|
|
*/
|
|
public function testLoadCaseLogExtensions($aClassesForInterfaceOrmCaseLog, $aDedicatedParamConf, $aExpectedOrmCaseLogExtensions) {
|
|
if (!is_null($aDedicatedParamConf)){
|
|
\MetaModel::GetConfig()->Set('ormcaselog_extension_classes', $aDedicatedParamConf);
|
|
var_dump($aDedicatedParamConf);
|
|
}
|
|
|
|
$oOrmCaseLogService = new \ormCaseLogService();
|
|
|
|
$aRes = $this->InvokeNonPublicMethod(\ormCaseLogService::class, "LoadCaseLogExtensions", $oOrmCaseLogService,
|
|
[$aClassesForInterfaceOrmCaseLog]);
|
|
|
|
$this->assertEquals(sizeof($aExpectedOrmCaseLogExtensions), sizeof($aRes));
|
|
foreach ($aRes as $i => $aExtensionObject){
|
|
$sExpectedClass = $aExpectedOrmCaseLogExtensions[$i];
|
|
$this->assertEquals($sExpectedClass, get_class($aExtensionObject));
|
|
}
|
|
}
|
|
|
|
public function testDefaultLoadCaseLogExtensions() {
|
|
$oOrmCaseLogService = new \ormCaseLogService();
|
|
|
|
$aRes = $this->InvokeNonPublicMethod(\ormCaseLogService::class, "LoadCaseLogExtensions", $oOrmCaseLogService,
|
|
[]);
|
|
|
|
$this->assertEquals(0, sizeof($aRes), 'no extension running by default on iTop');
|
|
}
|
|
|
|
public function testLoadCaseLogExtensions_Memorize() {
|
|
$sNamespace = 'Combodo\\iTop\\Test\\';
|
|
$sExtensionClass1 = $sNamespace . \FakeOrmCaseLogExtension1::class;
|
|
$sExtensionClass2 = $sNamespace . \FakeOrmCaseLogExtension2::class;
|
|
$aExtensions = [$sExtensionClass1];
|
|
\MetaModel::GetConfig()->Set('ormcaselog_extension_classes', $aExtensions);
|
|
|
|
$oOrmCaseLogService = new \ormCaseLogService();
|
|
$aRes = $this->InvokeNonPublicMethod(\ormCaseLogService::class, "LoadCaseLogExtensions", $oOrmCaseLogService,
|
|
[$aExtensions]);
|
|
|
|
//load first time
|
|
$this->assertEquals(sizeof($aExtensions), sizeof($aRes));
|
|
|
|
$aMoreExtensions = [$sExtensionClass1, $sExtensionClass2];
|
|
\MetaModel::GetConfig()->Set('ormcaselog_extension_classes', $aMoreExtensions);
|
|
$aRes = $this->InvokeNonPublicMethod(\ormCaseLogService::class, "LoadCaseLogExtensions", $oOrmCaseLogService,
|
|
[$aMoreExtensions]);
|
|
$this->assertEquals(sizeof($aExtensions), sizeof($aRes), 'should still have one extension (memorized)');
|
|
|
|
$oOrmCaseLogService = new \ormCaseLogService();
|
|
$aRes = $this->InvokeNonPublicMethod(\ormCaseLogService::class, "LoadCaseLogExtensions", $oOrmCaseLogService,
|
|
[$aMoreExtensions]);
|
|
$this->assertEquals(sizeof($aMoreExtensions), sizeof($aRes), 'first time load');
|
|
}
|
|
}
|