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/InplaceSetupAudit.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(), DryRemovalRuntimeEnvironment::DRY_REMOVAL_AUDIT_ENV); $expected = [ "Feature1Module1MyClass", "FinalClassFeature2Module1MyClass", "FinalClassFeature2Module1MyFinalClassFromLocation", ]; $this->assertEqualsCanonicalizing($expected, $oSetupAudit->GetRemovedClasses()); $expected = [ "FinalClassFeature2Module1MyFinalClassFromLocation" => 0, ]; $this->assertEqualsCanonicalizing($expected, $oSetupAudit->GetIssues()); } public function testGetRemovedClassesFromSetupWizard() { $sEnv = MetaModel::GetEnvironment(); $aClassesBeforeRemoval = ModelReflectionSerializer::GetInstance()->GetModelFromEnvironment($sEnv); $aClassesBeforeRemoval[] = "GabuZomeu"; $oSetupAudit = new InplaceSetupAudit($aClassesBeforeRemoval, $sEnv); $oSetupAudit->ComputeClasses(); $this->assertEquals(["GabuZomeu"], $oSetupAudit->GetRemovedClasses()); } 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(), DryRemovalRuntimeEnvironment::DRY_REMOVAL_AUDIT_ENV); $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(), DryRemovalRuntimeEnvironment::DRY_REMOVAL_AUDIT_ENV); $aRemovedClasses = [ "Feature1Module1MyClass", "FinalClassFeature1Module1MyClass", "FinalClassFeature1Module1MyFinalClassFromLocation", "FinalClassFeature2Module1MyClass", "FinalClassFeature2Module1MyFinalClassFromLocation", ]; //avoid setup dry computation $this->SetNonPublicProperty($oSetupAudit, 'aRemovedClasses', $aRemovedClasses); $expected = [ "FinalClassFeature1Module1MyFinalClassFromLocation" => 1, ]; $this->assertEqualsCanonicalizing($expected, $oSetupAudit->GetIssues(true)); } }