From 8aac64cc19f6e2d75fcf496c757f71e3fc682713 Mon Sep 17 00:00:00 2001 From: Timothee Date: Mon, 5 Jan 2026 10:34:42 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B08864=20Added=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup/runtimeenv.class.inc.php | 2 +- setup/wizardsteps.class.inc.php | 84 ++++++++-------- .../ConfigTest/config-itop-joker.php | 16 ++-- .../ConfigTest/config-itop-var.php | 18 ++-- .../setup/WizStepModulesChoiceTest.php | 95 +++++++++++++++++++ .../setup/iTopExtensionsMapFake.php | 2 + 6 files changed, 158 insertions(+), 59 deletions(-) diff --git a/setup/runtimeenv.class.inc.php b/setup/runtimeenv.class.inc.php index 945e91322..2dd8a66d3 100644 --- a/setup/runtimeenv.class.inc.php +++ b/setup/runtimeenv.class.inc.php @@ -1029,4 +1029,4 @@ class RunTimeEnvironment return sprintf("Checked %d classes in %.1f ms. No error found.\n", $iCount, $fDuration * 1000.0); } -} // End of class \ No newline at end of file +} // End of class diff --git a/setup/wizardsteps.class.inc.php b/setup/wizardsteps.class.inc.php index cdad225a8..88ce73756 100644 --- a/setup/wizardsteps.class.inc.php +++ b/setup/wizardsteps.class.inc.php @@ -1368,6 +1368,52 @@ class WizStepModulesChoice extends WizardStep return ['WizStepModulesChoice', 'WizStepSummary']; } + public function GetAddedAndRemovedExtensions($aSelectedExtensions) + { + $aExtensionsAdded = []; + $aExtensionsRemoved = []; + $aExtensionsNotUninstallable = []; + foreach ($this->oExtensionsMap->GetAllExtensionsWithPreviouslyInstalled() as $oExtension) { + /* @var \iTopExtension $oExtension */ + $bSelected = in_array($oExtension->sCode, $aSelectedExtensions); + if ($oExtension->bInstalled && !$bSelected) { + $aExtensionsRemoved[$oExtension->sCode] = $oExtension->sLabel; + if (!$oExtension->CanBeUninstalled()) { + $aExtensionsNotUninstallable[$oExtension->sCode] = true; + } + } elseif (!$oExtension->bInstalled && $bSelected) { + $aExtensionsAdded[$oExtension->sCode] = $oExtension->sLabel; + } + } + + $sExtensionsAdded = ''; + if (count($aExtensionsAdded) > 0) { + $sExtensionsAdded = ''; + } else { + $sExtensionsAdded = ''; + } + + $sExtensionsRemoved = ''; + if (count($aExtensionsRemoved) > 0) { + $sExtensionsRemoved = ''; + } else { + $sExtensionsRemoved = ''; + } + return [$sExtensionsAdded, $sExtensionsRemoved]; + } + public function ProcessParams($bMoveForward = true) { // Accumulates the selected modules: @@ -1398,43 +1444,7 @@ class WizStepModulesChoice extends WizardStep $this->oWizard->SetParameter('old_addon', true); } - $aExtensionsAdded = []; - $aExtensionsRemoved = []; - $aExtensionsNotUninstallable = []; - foreach ($this->oExtensionsMap->GetAllExtensionsWithPreviouslyInstalled() as $oExtension) { - /* @var \iTopExtension $oExtension */ - $bSelected = in_array($oExtension->sCode, $aExtensions); - if ($oExtension->bInstalled && !$bSelected) { - $aExtensionsRemoved[$oExtension->sCode] = $oExtension->sLabel; - } elseif (!$oExtension->bInstalled && $bSelected) { - $aExtensionsAdded[$oExtension->sCode] = $oExtension->sLabel; - } - if (!$oExtension->CanBeUninstalled()) { - $aExtensionsNotUninstallable[$oExtension->sCode] = true; - } - } - - $sExtensionsAdded = ''; - if (count($aExtensionsAdded) > 0) { - $sExtensionsAdded = ''; - } - - $sExtensionsRemoved = ''; - if (count($aExtensionsRemoved) > 0) { - $sExtensionsRemoved = ''; - } + [$sExtensionsAdded, $sExtensionsRemoved] = $this->GetAddedAndRemovedExtensions($aExtensions); $this->oWizard->SetParameter('selected_modules', json_encode(array_keys($aModules))); $this->oWizard->SetParameter('selected_extensions', json_encode($aExtensions)); diff --git a/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/ConfigTest/config-itop-joker.php b/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/ConfigTest/config-itop-joker.php index 7c4a359c2..cbce0bb87 100644 --- a/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/ConfigTest/config-itop-joker.php +++ b/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/ConfigTest/config-itop-joker.php @@ -7,30 +7,26 @@ * * */ -$MySettings = array( - - +$MySettings = [ // app_root_url: Root URL used for navigating within the application, or from an email to the application (you can put $SERVER_NAME$ as a placeholder for the server's name) // default: '' 'app_root_url' => 'http://%server(SERVER_NAME)?:localhost%/itop/iTop/', - -); +]; /** * * Modules specific settings * */ -$MyModuleSettings = array( -); +$MyModuleSettings = [ +]; /** * * Data model modules to be loaded. Names are specified as relative paths * */ -$MyModules = array( -); -?> \ No newline at end of file +$MyModules = [ +]; diff --git a/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/ConfigTest/config-itop-var.php b/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/ConfigTest/config-itop-var.php index a9e41ee35..3dc1986cd 100644 --- a/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/ConfigTest/config-itop-var.php +++ b/tests/php-unit-tests/unitary-tests/datamodels/2.x/itop-config/ConfigTest/config-itop-var.php @@ -7,30 +7,26 @@ * * */ -$MySettings = array( - - +$MySettings = [ // app_root_url: Root URL used for navigating within the application, or from an email to the application (you can put $SERVER_NAME$ as a placeholder for the server's name) // default: '' - 'app_root_url' => 'http://' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost') . '/itop/iTop/', + 'app_root_url' => 'http://'.(isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost').'/itop/iTop/', - -); +]; /** * * Modules specific settings * */ -$MyModuleSettings = array( -); +$MyModuleSettings = [ +]; /** * * Data model modules to be loaded. Names are specified as relative paths * */ -$MyModules = array( -); -?> \ No newline at end of file +$MyModules = [ +]; diff --git a/tests/php-unit-tests/unitary-tests/setup/WizStepModulesChoiceTest.php b/tests/php-unit-tests/unitary-tests/setup/WizStepModulesChoiceTest.php index 11a11fd46..7bdeac6af 100644 --- a/tests/php-unit-tests/unitary-tests/setup/WizStepModulesChoiceTest.php +++ b/tests/php-unit-tests/unitary-tests/setup/WizStepModulesChoiceTest.php @@ -257,4 +257,99 @@ class WizStepModulesChoiceTest extends ItopTestCase $this->assertEquals($aExpectedFlags, $aFlags); } + public function ProviderGetAddedAndRemovedExtensions() + { + return [ + 'no extensions' => [ + 'aExtensions' => [], + + 'aSelected' => [], + 'sExpectedAddedList' => '', + 'sExpectedRemovedList' => '', + ], + 'no extensions selected' => [ + 'aExtensions' => [ + 'itop-ext1' => [ + 'installed' => false, + ], + ], + 'aSelected' => [], + 'sExpectedAddedList' => '', + 'sExpectedRemovedList' => '', + ], + 'no extensions removed' => [ + 'aExtensions' => [ + 'itop-ext1' => [ + 'installed' => true, + ], + ], + 'aSelected' => ['itop-ext1'], + 'sExpectedAddedList' => '', + 'sExpectedRemovedList' => '', + ], + 'One added extension' => [ + 'aExtensions' => [ + 'itop-ext1' => [ + 'installed' => false, + ], + ], + 'aSelected' => ['itop-ext1'], + 'sExpectedAddedList' => '', + 'sExpectedRemovedList' => '', + ], + 'One removed extension' => [ + 'aExtensions' => [ + 'itop-ext1' => [ + 'installed' => true, + ], + ], + 'aSelected' => [], + 'sExpectedAddedList' => '', + 'sExpectedRemovedList' => '', + ], + 'Forced removed extension' => [ + 'aExtensions' => [ + 'itop-ext1' => [ + 'installed' => true, + 'uninstallable' => false, + ], + ], + 'aSelected' => [], + 'sExpectedAddedList' => '', + 'sExpectedRemovedList' => '', + ], + 'added and removed extensions' => [ + 'aExtensions' => [ + 'itop-ext-added1' => [ + 'installed' => false, + ], + 'itop-ext-added2' => [ + 'installed' => false, + ], + 'itop-ext-removed1' => [ + 'installed' => true, + ], + 'itop-ext-removed2' => [ + 'installed' => true, + ], + ], + 'aSelected' => ['itop-ext-added1', 'itop-ext-added2'], + 'sExpectedAddedList' => '', + 'sExpectedRemovedList' => '', + ], + + ]; + } + + /** + * @dataProvider ProviderGetAddedAndRemovedExtensions + */ + public function testGetAddedAndRemovedExtensions($aExtensions, $aSelectedExtensions, $sExpectedAddedList, $sExpectedRemovedList) + { + $this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensions)); + [$sAddedList, $sRemovedList] = $this->oStep->GetAddedAndRemovedExtensions($aSelectedExtensions); + $this->assertEquals($sExpectedAddedList, $sAddedList); + $this->assertEquals($sExpectedRemovedList, $sRemovedList); + } + } diff --git a/tests/php-unit-tests/unitary-tests/setup/iTopExtensionsMapFake.php b/tests/php-unit-tests/unitary-tests/setup/iTopExtensionsMapFake.php index e80b88eb6..ff1a204af 100644 --- a/tests/php-unit-tests/unitary-tests/setup/iTopExtensionsMapFake.php +++ b/tests/php-unit-tests/unitary-tests/setup/iTopExtensionsMapFake.php @@ -12,9 +12,11 @@ class iTopExtensionsMapFake extends iTopExtensionsMap public static function createFromArray($aExtensions) { $oMap = new static(); + foreach ($aExtensions as $sCode => $aExtension) { $oExtension = new iTopExtension(); $oExtension->sCode = $sCode; + $oExtension->sLabel = $sCode; $oExtension->bInstalled = $aExtension['installed']; $oExtension->aModules = $aExtension['modules'] ?? []; $oExtension->bCanBeUninstalled = $aExtension['uninstallable'] ?? null;