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); } }