mirror of
https://github.com/Combodo/iTop.git
synced 2026-08-06 05:48:21 +02:00
N°8760 - be able to simulate extension removal by oerriding GetExtensionMap be able to simulate SetupAudit errors in Setups for integration tests fix rebase
118 lines
3.9 KiB
PHP
118 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace Combodo\iTop\Test\UnitTest\Setup\FeatureRemoval;
|
|
|
|
use Combodo\iTop\Setup\FeatureRemoval\DryRemovalRuntimeEnvironment;
|
|
use Combodo\iTop\Setup\FeatureRemoval\SetupAudit;
|
|
use Combodo\iTop\Test\UnitTest\ItopCustomDatamodelTestCase;
|
|
use Combodo\iTop\Test\UnitTest\Service\UnitTestRunTimeEnvironment;
|
|
use Exception;
|
|
|
|
class SetupAuditTest extends ItopCustomDatamodelTestCase
|
|
{
|
|
const ENVT = 'php-unit-extensionremoval-tests';
|
|
|
|
public function GetDatamodelDeltaAbsPath(): string
|
|
{
|
|
//no delta: empty path provided
|
|
return "";
|
|
}
|
|
|
|
public function GetAdditionalFeaturePaths(): array
|
|
{
|
|
$aFeaturePaths = [];
|
|
foreach (glob(__DIR__."/additional_features/*", GLOB_ONLYDIR) as $aFeaturePath) {
|
|
$sCode = basename($aFeaturePath);
|
|
$aFeaturePaths[$sCode] = $aFeaturePath;
|
|
}
|
|
|
|
return $aFeaturePaths;
|
|
}
|
|
|
|
protected function setUp(): void
|
|
{
|
|
static::LoadRequiredItopFiles();
|
|
$this->oEnvironment = new UnitTestRunTimeEnvironment(self::ENVT);
|
|
$this->oEnvironment->bUseDelta = false;
|
|
$this->oEnvironment->bUseAdditionalFeatures = true;
|
|
parent::setUp();
|
|
|
|
$this->RequireOnceItopFile('/setup/feature_removal/SetupAudit.php');
|
|
$this->RequireOnceItopFile('/setup/feature_removal/DryRemovalRuntimeEnvironment.php');
|
|
}
|
|
|
|
public function GetTestEnvironment(): string
|
|
{
|
|
return self::ENVT;
|
|
}
|
|
|
|
public function testComputeDryRemoval()
|
|
{
|
|
$oDryRemovalRuntimeEnvt = new DryRemovalRuntimeEnvironment();
|
|
$oDryRemovalRuntimeEnvt->Prepare($this->GetTestEnvironment(), ['nominal_ext1', 'finalclass_ext2']);
|
|
$oDryRemovalRuntimeEnvt->CompileFrom($this->GetTestEnvironment());
|
|
|
|
$oSetupAudit = new SetupAudit(\MetaModel::GetEnvironment());
|
|
|
|
$expected = [
|
|
"Feature1Module1MyClass",
|
|
"FinalClassFeature2Module1MyClass",
|
|
"FinalClassFeature2Module1MyFinalClassFromLocation",
|
|
];
|
|
$this->assertEqualsCanonicalizing($expected, $oSetupAudit->GetRemovedClasses());
|
|
|
|
$expected = [
|
|
"FinalClassFeature2Module1MyFinalClassFromLocation" => 0,
|
|
];
|
|
$this->assertEqualsCanonicalizing($expected, $oSetupAudit->GetIssues());
|
|
}
|
|
|
|
public function testGetIssues()
|
|
{
|
|
$sUID = "AuditExtensionsCleanupRules_".uniqid();
|
|
$oOrg = $this->CreateOrganization($sUID);
|
|
$this->createObject('FinalClassFeature1Module1MyFinalClassFromLocation', ['org_id' => $oOrg->GetKey(), 'name' => $sUID, 'name2' => uniqid()]);
|
|
|
|
$oSetupAudit = new SetupAudit(\MetaModel::GetEnvironment());
|
|
$aRemovedClasses = [
|
|
"Feature1Module1MyClass",
|
|
"FinalClassFeature1Module1MyClass",
|
|
"FinalClassFeature1Module1MyFinalClassFromLocation",
|
|
"FinalClassFeature2Module1MyClass",
|
|
"FinalClassFeature2Module1MyFinalClassFromLocation",
|
|
];
|
|
|
|
//avoid setup dry computation
|
|
$this->SetNonPublicProperty($oSetupAudit, 'aRemovedClasses', $aRemovedClasses);
|
|
|
|
$expected = [
|
|
"FinalClassFeature1Module1MyFinalClassFromLocation" => 1,
|
|
"FinalClassFeature2Module1MyFinalClassFromLocation" => 0,
|
|
];
|
|
$this->assertEqualsCanonicalizing($expected, $oSetupAudit->GetIssues());
|
|
}
|
|
|
|
public function testAuditExtensionsCleanupRulesFailASAP()
|
|
{
|
|
$sUID = "AuditExtensionsCleanupRules_".uniqid();
|
|
$oOrg = $this->CreateOrganization($sUID);
|
|
$this->createObject('FinalClassFeature1Module1MyFinalClassFromLocation', ['org_id' => $oOrg->GetKey(), 'name' => $sUID, 'name2' => uniqid()]);
|
|
$this->createObject('FinalClassFeature2Module1MyFinalClassFromLocation', ['org_id' => $oOrg->GetKey(), 'name' => $sUID, 'name2' => uniqid()]);
|
|
|
|
$oSetupAudit = new SetupAudit(\MetaModel::GetEnvironment());
|
|
$aRemovedClasses = [
|
|
"Feature1Module1MyClass",
|
|
"FinalClassFeature1Module1MyClass",
|
|
"FinalClassFeature1Module1MyFinalClassFromLocation",
|
|
"FinalClassFeature2Module1MyClass",
|
|
"FinalClassFeature2Module1MyFinalClassFromLocation",
|
|
];
|
|
|
|
//avoid setup dry computation
|
|
$this->SetNonPublicProperty($oSetupAudit, 'aRemovedClasses', $aRemovedClasses);
|
|
|
|
$this->expectException(Exception::class);
|
|
$this->expectExceptionMessage('FinalClassFeature1Module1MyFinalClassFromLocation');
|
|
$oSetupAudit->GetIssues(true);
|
|
}
|
|
} |