mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-19 00:28:47 +02:00
N°9009 Add more phpunit tests
This commit is contained in:
@@ -499,7 +499,7 @@ EOF
|
||||
}
|
||||
}
|
||||
}
|
||||
$aOptions = isset($aInfo['options']) ? $aInfo['options'] : [];
|
||||
$aOptions = $aInfo['options'] ?? [];
|
||||
foreach ($aOptions as $index => $aChoice) {
|
||||
$sChoiceId = $sParentId.self::$SEP.$index;
|
||||
$aModuleInfo = [];
|
||||
@@ -515,18 +515,18 @@ EOF
|
||||
$sDisplayChoices .= '<li>'.$aChoice['title'].'</li>';
|
||||
if (isset($aChoice['modules'])) {
|
||||
if (count($aChoice['modules']) === 0) {
|
||||
throw new Exception('Setup option does not have any module associated');
|
||||
throw new Exception('Extension '.$aChoice['extension_code'].' does not have any module associated');
|
||||
}
|
||||
foreach ($aChoice['modules'] as $sModuleId) {
|
||||
$bSelected = true;
|
||||
if (isset($aModuleInfo[$sModuleId])) {
|
||||
// Test if module has 'auto_select'
|
||||
$aInfo = $aModuleInfo[$sModuleId];
|
||||
if (isset($aInfo['auto_select'])) {
|
||||
$aCurrentModuleInfo = $aModuleInfo[$sModuleId];
|
||||
if (isset($aCurrentModuleInfo['auto_select'])) {
|
||||
// Check the module selection
|
||||
try {
|
||||
SetupInfo::SetSelectedModules($aModules);
|
||||
$bSelected = $this->GetPhpExpressionEvaluator()->ParseAndEvaluateBooleanExpression($aInfo['auto_select']);
|
||||
$bSelected = $this->GetPhpExpressionEvaluator()->ParseAndEvaluateBooleanExpression($aCurrentModuleInfo['auto_select']);
|
||||
} catch (ModuleFileReaderException $e) {
|
||||
//logged already
|
||||
$bSelected = false;
|
||||
@@ -539,7 +539,6 @@ EOF
|
||||
}
|
||||
}
|
||||
}
|
||||
$sChoiceType = isset($aChoice['type']) ? $aChoice['type'] : 'wizard_option';
|
||||
if ($aSelectedExtensions !== null) {
|
||||
$aSelectedExtensions[] = $aChoice['extension_code'];
|
||||
}
|
||||
@@ -553,7 +552,7 @@ EOF
|
||||
}
|
||||
}
|
||||
|
||||
$aAlternatives = isset($aInfo['alternatives']) ? $aInfo['alternatives'] : [];
|
||||
$aAlternatives = $aInfo['alternatives'] ?? [];
|
||||
$sChoiceName = null;
|
||||
foreach ($aAlternatives as $index => $aChoice) {
|
||||
$sChoiceId = $sParentId.self::$SEP.$index;
|
||||
|
||||
@@ -573,6 +573,11 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
||||
'aExpectedModules' => ['combodo-sample-module' => true],
|
||||
'aExpectedExtensions' => ['combodo-sample'],
|
||||
],
|
||||
'More extensions selected' => [
|
||||
'aSelected' => ['_0' => '_0', '_1' => '_1'],
|
||||
'aExpectedModules' => ['combodo-sample-module' => true, 'combodo-test-moduleA' => true, 'combodo-test-moduleB' => true],
|
||||
'aExpectedExtensions' => ['combodo-sample', 'combodo-test'],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -585,10 +590,12 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
||||
'combodo-sample' => [
|
||||
'installed' => false,
|
||||
],
|
||||
'combodo-test' => [
|
||||
'installed' => false,
|
||||
],
|
||||
];
|
||||
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData, ));
|
||||
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData ));
|
||||
|
||||
//GetSelectedModules
|
||||
$aStepInfo = [
|
||||
'title' => 'Extensions',
|
||||
'description' => '',
|
||||
@@ -608,6 +615,21 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
||||
'uninstallable' => true,
|
||||
'missing' => false,
|
||||
],
|
||||
[
|
||||
'extension_code' => 'combodo-test',
|
||||
'title' => 'Test extension',
|
||||
'description' => '',
|
||||
'more_info' => '',
|
||||
'default' => true,
|
||||
'modules' => [
|
||||
'combodo-test-moduleA',
|
||||
'combodo-test-moduleB',
|
||||
],
|
||||
'mandatory' => false,
|
||||
'source_label' => '',
|
||||
'uninstallable' => true,
|
||||
'missing' => false,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@@ -618,6 +640,166 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
||||
$this->assertEquals($aExpectedExtensions, $aExtensions);
|
||||
}
|
||||
|
||||
public function testGetSelectedModulesShouldAlwaysSelectMandatoryExtension()
|
||||
{
|
||||
|
||||
$aSelectedExtensions = ['_0' => '_0'];
|
||||
|
||||
$aExtensionsMapData = [
|
||||
'combodo-sample' => [
|
||||
'installed' => true,
|
||||
],
|
||||
];
|
||||
|
||||
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData ));
|
||||
|
||||
$aStepInfo = [
|
||||
'title' => 'Extensions',
|
||||
'description' => '',
|
||||
'banner' => '',
|
||||
'options' => [
|
||||
[
|
||||
'extension_code' => 'combodo-sample',
|
||||
'title' => 'Sample extension',
|
||||
'description' => '',
|
||||
'more_info' => '',
|
||||
'default' => true,
|
||||
'modules' => [
|
||||
'combodo-sample-module',
|
||||
],
|
||||
'mandatory' => false,
|
||||
'source_label' => '',
|
||||
'uninstallable' => true,
|
||||
'missing' => true,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$aExpectedModules = ['combodo-sample-module' => true];
|
||||
$aExpectedExtensions = ['combodo-sample'];
|
||||
|
||||
|
||||
$aModules = [];
|
||||
$aExtensions = [];
|
||||
$this->oStep->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions);
|
||||
$this->assertEquals($aExpectedModules, $aModules);
|
||||
$this->assertEquals($aExpectedExtensions, $aExtensions);
|
||||
}
|
||||
|
||||
public function testGetSelectedModulesShouldShouldParseAutoSelectCondition()
|
||||
{
|
||||
//the 'auto_select' parameter, contrary to its name, deselect the module if its result is false
|
||||
|
||||
$aSelectedExtensions = ['_0' => '_0'];
|
||||
|
||||
$aExtensionsMapData = [
|
||||
'combodo-sample' => [
|
||||
'installed' => true,
|
||||
'module_info' => [
|
||||
'combodo-sample-module' => [
|
||||
'auto_select' => 'true && false',
|
||||
],
|
||||
]
|
||||
],
|
||||
];
|
||||
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData ));
|
||||
|
||||
$aStepInfo = [
|
||||
'title' => 'Extensions',
|
||||
'description' => '',
|
||||
'banner' => '',
|
||||
'options' => [
|
||||
[
|
||||
'extension_code' => 'combodo-sample',
|
||||
'title' => 'Sample extension',
|
||||
'description' => '',
|
||||
'more_info' => '',
|
||||
'default' => true,
|
||||
'modules' => [
|
||||
'combodo-sample-module',
|
||||
],
|
||||
'mandatory' => false,
|
||||
'source_label' => '',
|
||||
'uninstallable' => true,
|
||||
'missing' => true,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$aExpectedModules = [];
|
||||
$aExpectedExtensions = ['combodo-sample'];
|
||||
|
||||
|
||||
$aModules = [];
|
||||
$aExtensions = [];
|
||||
$this->oStep->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions);
|
||||
$this->assertEquals($aExpectedModules, $aModules);
|
||||
$this->assertEquals($aExpectedExtensions, $aExtensions);
|
||||
}
|
||||
|
||||
public function testGetSelectedModulesWithSubOptions()
|
||||
{
|
||||
|
||||
$aSelectedExtensions = ['_0' => '_0', '_0_0' => '_0_0'];
|
||||
|
||||
$aExtensionsMapData = [
|
||||
'combodo-sample' => [
|
||||
'installed' => false,
|
||||
],
|
||||
'combodo-sub-sample' => [
|
||||
'installed' => false,
|
||||
],
|
||||
];
|
||||
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData ));
|
||||
|
||||
$aStepInfo = [
|
||||
'options' => [
|
||||
[
|
||||
'extension_code' => 'combodo-sample',
|
||||
'title' => 'Sample extension',
|
||||
'description' => '',
|
||||
'more_info' => '',
|
||||
'default' => true,
|
||||
'modules' => [
|
||||
'combodo-sample-module',
|
||||
],
|
||||
'mandatory' => false,
|
||||
'source_label' => '',
|
||||
'uninstallable' => true,
|
||||
'missing' => false,
|
||||
'sub_options' => [
|
||||
'options' => [
|
||||
[
|
||||
'extension_code' => 'combodo-sub-sample',
|
||||
'title' => 'Sample sub extension',
|
||||
'description' => '',
|
||||
'more_info' => '',
|
||||
'default' => true,
|
||||
'modules' => [
|
||||
'combodo-sub-sample-module',
|
||||
],
|
||||
'mandatory' => false,
|
||||
'source_label' => '',
|
||||
'uninstallable' => true,
|
||||
'missing' => false,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$aExpectedModules = ['combodo-sample-module' => true, 'combodo-sub-sample-module' => true];
|
||||
$aExpectedExtensions = ['combodo-sample', 'combodo-sub-sample'];
|
||||
|
||||
|
||||
$aModules = [];
|
||||
$aExtensions = [];
|
||||
$this->oStep->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions);
|
||||
$this->assertEquals($aExpectedModules, $aModules);
|
||||
$this->assertEquals($aExpectedExtensions, $aExtensions);
|
||||
}
|
||||
|
||||
public function testGetSelectedModulesShouldThrowAnExceptionWhenAnySelectedExtensionDoesNotHaveAnyAssociatedModules()
|
||||
{
|
||||
$aExtensionsMapData = [
|
||||
@@ -625,7 +807,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
||||
'installed' => false,
|
||||
],
|
||||
];
|
||||
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData, ));
|
||||
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData ));
|
||||
|
||||
//GetSelectedModules
|
||||
$aStepInfo = [
|
||||
@@ -651,6 +833,7 @@ class WizStepModulesChoiceTest extends ItopTestCase
|
||||
$aModules = [];
|
||||
$aExtensions = [];
|
||||
$this->expectException('Exception');
|
||||
$this->expectExceptionMessage('Extension combodo-sample does not have any module associated');
|
||||
$this->oStep->GetSelectedModules($aStepInfo, ['_0' => '_0'], $aModules, '', '', $aExtensions);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class iTopExtensionsMapFake extends iTopExtensionsMap
|
||||
$oExtension->aModules = $aExtension['modules'] ?? [];
|
||||
$oExtension->bCanBeUninstalled = $aExtension['uninstallable'] ?? null;
|
||||
$oExtension->sVersion = $aExtension['version'] ?? '1.0.0';
|
||||
$oExtension->aModuleInfo = [];
|
||||
$oExtension->aModuleInfo = $aExtension['module_info'] ?? [];
|
||||
$oMap->AddExtension($oExtension);
|
||||
}
|
||||
return $oMap;
|
||||
|
||||
Reference in New Issue
Block a user