refactoring: code cleanup/standardization/remove all prototype stuffs

This commit is contained in:
odain
2025-09-15 14:32:48 +02:00
parent 5dea3c7ce2
commit 996b98c4c7
5 changed files with 52 additions and 47 deletions

View File

@@ -132,4 +132,11 @@ class ModuleDependency {
}
return $bResult;
}
public function IsDependencyRegexpInvalid(): bool
{
return $this->bInvalidDependencyRegexp;
}
}

View File

@@ -277,11 +277,9 @@ MSG;
public function testOrderModulesByDependenciesNewComputation_RealExample(){
$aModules = json_decode(file_get_contents(__DIR__ . '/ressources/module_deps.json'), true);
//$aResult = iTopCoreModuleDependencySort::OrderModulesByDependencies($aModules, true, null);
$aLegacyResult = ModuleDiscovery::OrderModulesByDependencies($aModules, true, null);
$aResult = ModuleDiscovery::OrderModulesByDependencies($aModules, true, null);
$aExpected = json_decode(file_get_contents(__DIR__ . '/ressources/expected_ordered_module_ids.json'), true);
//$this->assertEquals( $aLegacyResult, $aResult);
$this->assertEquals($aExpected, array_keys($aLegacyResult));
$this->assertEquals($aExpected, array_keys($aResult));
}
}

View File

@@ -6,7 +6,7 @@ use Combodo\iTop\Setup\ModuleDependency\Module;
use Combodo\iTop\Setup\ModuleDependency\ModuleDependencySort;
use Combodo\iTop\Test\UnitTest\ItopDataTestCase;
class ModuleDiscoveryTest extends ItopDataTestCase
class ModuleDependencySortTest extends ItopDataTestCase
{
public function setUp(): void {
parent::setUp();

View File

@@ -2,27 +2,27 @@
namespace Combodo\iTop\Test\UnitTest\Setup;
use Combodo\iTop\Test\UnitTest\ItopTestCase;
use iTopCoreModuleDependency;
use Combodo\iTop\Setup\ModuleDependency\ModuleDependency;
use Combodo\iTop\Test\UnitTest\ItopDataTestCase;
class ItopCoreModuleDependencyTest extends ItopTestCase
class ModuleDependencyTest extends ItopDataTestCase
{
public function setUp(): void {
parent::setUp();
$this->RequireOnceItopFile('setup/module/ItopCoreModuleDependency.class.inc.php');
$this->RequireOnceItopFile('setup/moduledependency/moduledependency.class.inc.php');
}
public function testModuleDependencyInit_Invalid()
{
$oModuleDependency = new iTopCoreModuleDependency('||');
$this->assertEquals(true, $this->GetNonPublicProperty($oModuleDependency, 'bAlwaysUnresolved'));
$oModuleDependency = new ModuleDependency('||');
$this->assertEquals(true, $oModuleDependency->IsDependencyRegexpInvalid());
}
public function testModuleDependencyInit()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.0');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.0');
$this->assertEquals(['itop-config-mgmt/2.4.0' => [ 'itop-config-mgmt', '>=', '2.4.0']], $this->GetNonPublicProperty($oModuleDependency, 'aParamsPerModuleId'));
$this->assertEquals(false, $this->GetNonPublicProperty($oModuleDependency, 'bAlwaysUnresolved'));
$this->assertEquals(false, $oModuleDependency->IsDependencyRegexpInvalid());
$this->assertEquals(['itop-config-mgmt'], $oModuleDependency->GetPotentialPrerequisiteModuleNames());
}
@@ -41,9 +41,9 @@ class ItopCoreModuleDependencyTest extends ItopTestCase
public function testModuleDependencyInit_WithOperator($sOperator)
{
$sDepId = "itop-config-mgmt/{$sOperator}2.4.0";
$oModuleDependency = new iTopCoreModuleDependency($sDepId);
$oModuleDependency = new ModuleDependency($sDepId);
$this->assertEquals([$sDepId => [ 'itop-config-mgmt', $sOperator, '2.4.0']], $this->GetNonPublicProperty($oModuleDependency, 'aParamsPerModuleId'));
$this->assertEquals(false, $this->GetNonPublicProperty($oModuleDependency, 'bAlwaysUnresolved'));
$this->assertEquals(false, $oModuleDependency->IsDependencyRegexpInvalid());
$this->assertEquals(['itop-config-mgmt'], $oModuleDependency->GetPotentialPrerequisiteModuleNames());
}
@@ -63,63 +63,63 @@ class ItopCoreModuleDependencyTest extends ItopTestCase
public function testModuleDependencyInit_WithOperand($sOperand, $sDepId)
{
$sDepId = "itop-structure/3.0.0 $sOperand itop-portal/<3.2.1";
$oModuleDependency = new iTopCoreModuleDependency($sDepId);
$oModuleDependency = new ModuleDependency($sDepId);
$this->assertEquals(['itop-structure/3.0.0' => [ 'itop-structure', ">=", '3.0.0'], 'itop-portal/<3.2.1' => [ 'itop-portal', "<", '3.2.1']], $this->GetNonPublicProperty($oModuleDependency, 'aParamsPerModuleId'));
$this->assertEquals(false, $this->GetNonPublicProperty($oModuleDependency, 'bAlwaysUnresolved'));
$this->assertEquals(false, $oModuleDependency->IsDependencyRegexpInvalid());
$this->assertEquals(['itop-structure', 'itop-portal'], $oModuleDependency->GetPotentialPrerequisiteModuleNames());
}
public function testModuleIsDependencyResolved_SimpleCase_UnresolvedDueToMissingModule()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.0');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.0');
$this->assertEquals(false, $oModuleDependency->IsDependencyResolved([], ['itop-config-mgmt' => true]));
}
public function testModuleIsDependencyResolved_SimpleCase_UnresolvedDueToWrongModuleVersion()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.0');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.0');
$this->assertEquals(false, $oModuleDependency->IsDependencyResolved(['itop-config-mgmt' => '1.2.3'], ['itop-config-mgmt' => true]));
}
public function testModuleIsDependencyResolved_SimpleCase_ResolvedDue_MinorVersion()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.1');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.1');
$this->assertEquals(true, $oModuleDependency->IsDependencyResolved(['itop-config-mgmt' => '2.4.1-1'], ['itop-config-mgmt' => true]));
}
public function testModuleIsDependencyResolved_SimpleCase_ResolvedDue_MinorVersion2()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.1-1');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.1-1');
$this->assertEquals(true, $oModuleDependency->IsDependencyResolved(['itop-config-mgmt' => '2.4.1-2'], ['itop-config-mgmt' => true]));
}
public function testModuleIsDependencyResolved_SimpleCase_ResolvedDue_MinorVersion3()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.1-1');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.1-1');
$this->assertEquals(true, $oModuleDependency->IsDependencyResolved(['itop-config-mgmt' => '2.4.2'], ['itop-config-mgmt' => true]));
}
public function testModuleIsDependencyResolved_SimpleCase_UnresolvedDueToWrongModuleVersion_MinorVersion()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.1');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.1');
$this->assertEquals(false, $oModuleDependency->IsDependencyResolved(['itop-config-mgmt' => '2.4.0-1'], ['itop-config-mgmt' => true]));
}
public function testModuleIsDependencyResolved_SimpleCase_UnresolvedDueToWrongModuleVersion_MinorVersion2()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.1-1');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.1-1');
$this->assertEquals(false, $oModuleDependency->IsDependencyResolved(['itop-config-mgmt' => '2.4.1'], ['itop-config-mgmt' => true]));
}
public function testModuleIsDependencyResolved_SimpleCase_UnresolvedDueToWrongModuleVersion_MinorVersion3()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.1-1');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.1-1');
$this->assertEquals(false, $oModuleDependency->IsDependencyResolved(['itop-config-mgmt' => '2.4.1-0'], ['itop-config-mgmt' => true]));
}
public function testModuleIsDependencyResolved_SimpleCase_Resolved()
{
$oModuleDependency = new iTopCoreModuleDependency('itop-config-mgmt/2.4.0');
$oModuleDependency = new ModuleDependency('itop-config-mgmt/2.4.0');
$this->assertEquals(['itop-config-mgmt'], $oModuleDependency->GetPotentialPrerequisiteModuleNames());
$this->assertEquals(true, $oModuleDependency->IsDependencyResolved(['itop-config-mgmt' => '2.4.1'], ['itop-config-mgmt' => true]));
$this->assertEquals([], $oModuleDependency->GetPotentialPrerequisiteModuleNames());
@@ -128,9 +128,9 @@ class ItopCoreModuleDependencyTest extends ItopTestCase
public function testIsDependencyResolved_AndOperand_UnresolvedDueToMissingModule()
{
$sDepId = "itop-structure/3.0.0 && itop-portal/3.2.1";
$oModuleDependency = new iTopCoreModuleDependency($sDepId);
$oModuleDependency = new ModuleDependency($sDepId);
$this->assertEquals(['itop-structure/3.0.0' => [ 'itop-structure', ">=", '3.0.0'], 'itop-portal/3.2.1' => [ 'itop-portal', ">=", '3.2.1']], $this->GetNonPublicProperty($oModuleDependency, 'aParamsPerModuleId'));
$this->assertEquals(false, $this->GetNonPublicProperty($oModuleDependency, 'bAlwaysUnresolved'));
$this->assertEquals(false, $oModuleDependency->IsDependencyRegexpInvalid());
$this->assertEquals(['itop-structure', 'itop-portal'], $oModuleDependency->GetPotentialPrerequisiteModuleNames());
$this->assertEquals(false, $oModuleDependency->IsDependencyResolved(['itop-structure' => '3.0.0'], ['itop-structure' => true, 'itop-portal' => true]));
@@ -140,9 +140,9 @@ class ItopCoreModuleDependencyTest extends ItopTestCase
public function testIsDependencyResolved_AndOperand_UnresolvedDueToWrongModuleVersion()
{
$sDepId = "itop-structure/3.0.0 && itop-portal/3.2.1";
$oModuleDependency = new iTopCoreModuleDependency($sDepId);
$oModuleDependency = new ModuleDependency($sDepId);
$this->assertEquals(['itop-structure/3.0.0' => [ 'itop-structure', ">=", '3.0.0'], 'itop-portal/3.2.1' => [ 'itop-portal', ">=", '3.2.1']], $this->GetNonPublicProperty($oModuleDependency, 'aParamsPerModuleId'));
$this->assertEquals(false, $this->GetNonPublicProperty($oModuleDependency, 'bAlwaysUnresolved'));
$this->assertEquals(false, $oModuleDependency->IsDependencyRegexpInvalid());
$this->assertEquals(['itop-structure', 'itop-portal'], $oModuleDependency->GetPotentialPrerequisiteModuleNames());
$this->assertEquals(false, $oModuleDependency->IsDependencyResolved(['itop-structure' => '3.0.0', 'itop-portal' => '1.0.0'], ['itop-structure' => true, 'itop-portal' => true]));
@@ -152,9 +152,9 @@ class ItopCoreModuleDependencyTest extends ItopTestCase
public function testIsDependencyResolved_AndOperand_Resolved()
{
$sDepId = "itop-structure/3.0.0 && itop-portal/3.2.1";
$oModuleDependency = new iTopCoreModuleDependency($sDepId);
$oModuleDependency = new ModuleDependency($sDepId);
$this->assertEquals(['itop-structure/3.0.0' => [ 'itop-structure', ">=", '3.0.0'], 'itop-portal/3.2.1' => [ 'itop-portal', ">=", '3.2.1']], $this->GetNonPublicProperty($oModuleDependency, 'aParamsPerModuleId'));
$this->assertEquals(false, $this->GetNonPublicProperty($oModuleDependency, 'bAlwaysUnresolved'));
$this->assertEquals(false, $oModuleDependency->IsDependencyRegexpInvalid());
$this->assertEquals(['itop-structure', 'itop-portal'], $oModuleDependency->GetPotentialPrerequisiteModuleNames());
$this->assertEquals(false, $oModuleDependency->IsDependencyResolved(['itop-structure' => '3.0.0'], ['itop-structure' => true]));
@@ -164,9 +164,9 @@ class ItopCoreModuleDependencyTest extends ItopTestCase
public function testIsDependencyResolved_OrOperand_ResolvedDueToMissingModule()
{
$sDepId = "itop-structure/3.0.0 || itop-portal/3.2.1";
$oModuleDependency = new iTopCoreModuleDependency($sDepId);
$oModuleDependency = new ModuleDependency($sDepId);
$this->assertEquals(['itop-structure/3.0.0' => [ 'itop-structure', ">=", '3.0.0'], 'itop-portal/3.2.1' => [ 'itop-portal', ">=", '3.2.1']], $this->GetNonPublicProperty($oModuleDependency, 'aParamsPerModuleId'));
$this->assertEquals(false, $this->GetNonPublicProperty($oModuleDependency, 'bAlwaysUnresolved'));
$this->assertEquals(false, $oModuleDependency->IsDependencyRegexpInvalid());
$this->assertEquals(['itop-structure', 'itop-portal'], $oModuleDependency->GetPotentialPrerequisiteModuleNames());
$this->assertEquals(true, $oModuleDependency->IsDependencyResolved(['itop-structure' => '3.0.0'], ['itop-structure' => true]));

View File

@@ -2,19 +2,19 @@
namespace Combodo\iTop\Test\UnitTest\Setup;
use Combodo\iTop\Setup\ModuleDependency\Module;
use Combodo\iTop\Test\UnitTest\ItopTestCase;
use iTopCoreModule;
class iTopCoreModuleTest extends ItopTestCase
class ModuleTest extends ItopTestCase
{
public function setUp(): void {
parent::setUp();
$this->RequireOnceItopFile('setup/module/iTopCoreModule.class.inc.php');
$this->RequireOnceItopFile('setup/moduledependency/module.class.inc.php');
}
public function testModuleInit()
{
$oModule = new iTopCoreModule("itop-config-mgmt/2.4.0");
$oModule = new Module("itop-config-mgmt/2.4.0");
$this->assertEquals("itop-config-mgmt", $oModule->GetModuleName());
$this->assertEquals("2.4.0", $oModule->GetVersion());
$this->assertEquals("itop-config-mgmt/2.4.0", $oModule->GetModuleId());
@@ -22,7 +22,7 @@ class iTopCoreModuleTest extends ItopTestCase
public function testModuleInit_NoVersion()
{
$oModule = new iTopCoreModule("itop-config-mgmt");
$oModule = new Module("itop-config-mgmt");
$this->assertEquals("itop-config-mgmt", $oModule->GetModuleName());
$this->assertEquals("1.0.0", $oModule->GetVersion());
$this->assertEquals("itop-config-mgmt", $oModule->GetModuleId());
@@ -30,18 +30,18 @@ class iTopCoreModuleTest extends ItopTestCase
public function testIsResolved_Unresolved()
{
$oModule = new iTopCoreModule("itop-bridge-cmdb-ticket");
$oModule = new Module("itop-bridge-cmdb-ticket");
$oModule->SetDependencies(['itop-config-mgmt/2.7.1', 'itop-tickets/2.7.0']);
$this->assertEquals(['itop-config-mgmt', 'itop-tickets'], $oModule->GetUnresolvedDependencyModuleNames());
$this->assertEquals(false, $oModule->IsModuleResolved([],[]));
$this->assertEquals(['itop-config-mgmt', 'itop-tickets'], $oModule->GetUnresolvedDependencyModuleNames());
$this->assertEquals(['itop-config-mgmt/2.7.1', 'itop-tickets/2.7.0'], array_keys($oModule->aOngoingDependencies));
$this->assertEquals(['itop-config-mgmt/2.7.1', 'itop-tickets/2.7.0'], array_keys($oModule->aRemainingDependenciesToResolve));
}
public function testSetDependencies()
{
$oModule = new iTopCoreModule("itop-bridge-datacenter-mgmt-services");
$oModule = new Module("itop-bridge-datacenter-mgmt-services");
$oModule->SetDependencies([
'itop-config-mgmt/2.7.1',
'itop-service-mgmt/2.7.1 || itop-service-mgmt-provider/2.7.1',
@@ -54,28 +54,28 @@ class iTopCoreModuleTest extends ItopTestCase
$this->assertEquals(['itop-config-mgmt', 'itop-service-mgmt', 'itop-service-mgmt-provider', 'itop-datacenter-mgmt'],
$oModule->GetUnresolvedDependencyModuleNames());
$this->assertEquals(['itop-config-mgmt/2.7.1', 'itop-service-mgmt/2.7.1 || itop-service-mgmt-provider/2.7.1', 'itop-datacenter-mgmt/3.1.0'],
array_keys($oModule->aOngoingDependencies));
array_keys($oModule->aRemainingDependenciesToResolve));
}
public function testIsResolved_PartialResolution()
{
$oModule = new iTopCoreModule("itop-bridge-cmdb-ticket");
$oModule = new Module("itop-bridge-cmdb-ticket");
$oModule->SetDependencies(['itop-config-mgmt/2.7.1', 'itop-tickets/2.7.0']);
$this->assertEquals(['itop-config-mgmt', 'itop-tickets'], $oModule->GetUnresolvedDependencyModuleNames());
$this->assertEquals(false, $oModule->IsModuleResolved(['itop-config-mgmt' => '2.7.1'],['itop-config-mgmt'=>true]));
$this->assertEquals(['itop-tickets'], $oModule->GetUnresolvedDependencyModuleNames());
$this->assertEquals(['itop-tickets/2.7.0'], array_keys($oModule->aOngoingDependencies));
$this->assertEquals(['itop-tickets/2.7.0'], array_keys($oModule->aRemainingDependenciesToResolve));
}
public function testIsResolved_OK()
{
$oModule = new iTopCoreModule("itop-bridge-cmdb-ticket");
$oModule = new Module("itop-bridge-cmdb-ticket");
$oModule->SetDependencies(['itop-config-mgmt/2.7.1', 'itop-tickets/2.7.0']);
$this->assertEquals(['itop-config-mgmt', 'itop-tickets'], $oModule->GetUnresolvedDependencyModuleNames());
$this->assertEquals(true, $oModule->IsModuleResolved(['itop-config-mgmt' => '2.7.1', 'itop-tickets' => '2.7.0'],['itop-config-mgmt'=>true, 'itop-tickets' => true]));
$this->assertEquals([], $oModule->GetUnresolvedDependencyModuleNames());
$this->assertEquals([], array_keys($oModule->aOngoingDependencies));
$this->assertEquals([], array_keys($oModule->aRemainingDependenciesToResolve));
}
}