Skip to content

Commit 7c7dc4d

Browse files
committed
N°9009 Rebase
1 parent b135202 commit 7c7dc4d

File tree

2 files changed

+100
-2
lines changed

2 files changed

+100
-2
lines changed

setup/wizardsteps/WizStepModulesChoice.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class WizStepModulesChoice extends WizardStep
4848
*/
4949
protected bool $bChoicesFromDatabase;
5050

51-
private array $aAnalyzeInstallationModules;
51+
private array $aAnalyzeInstallationModules = [];
5252
private ?MissingDependencyException $oMissingDependencyException = null;
5353

5454
public function __construct(WizardController $oWizard, $sCurrentState)
@@ -486,7 +486,7 @@ private function GetPhpExpressionEvaluator(): PhpExpressionEvaluator
486486
*
487487
* @return string A text representation of what will be installed
488488
*/
489-
protected function GetSelectedModules($aInfo, $aSelectedChoices, &$aModules, $sParentId = '', $sDisplayChoices = '', &$aSelectedExtensions = null)
489+
public function GetSelectedModules($aInfo, $aSelectedChoices, &$aModules, $sParentId = '', $sDisplayChoices = '', &$aSelectedExtensions = null)
490490
{
491491
if ($sParentId == '') {
492492
// Check once (before recursing) that the hidden modules are selected
@@ -514,6 +514,9 @@ protected function GetSelectedModules($aInfo, $aSelectedChoices, &$aModules, $sP
514514
(isset($aSelectedChoices[$sChoiceId]) && ($aSelectedChoices[$sChoiceId] == $sChoiceId))) {
515515
$sDisplayChoices .= '<li>'.$aChoice['title'].'</li>';
516516
if (isset($aChoice['modules'])) {
517+
if (count($aChoice['modules']) === 0) {
518+
throw new Exception('Setup option does not have any module associated');
519+
}
517520
foreach ($aChoice['modules'] as $sModuleId) {
518521
$bSelected = true;
519522
if (isset($aModuleInfo[$sModuleId])) {

tests/php-unit-tests/unitary-tests/setup/WizStepModulesChoiceTest.php

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,4 +559,99 @@ private static function GetStep($index)
559559

560560
return $aSteps[$index] ?? null;
561561
}
562+
563+
public function ProviderGetSelectedModules()
564+
{
565+
return [
566+
'No extension selected' => [
567+
'aSelected' => [],
568+
'aExpectedModules' => [],
569+
'aExpectedExtensions' => [],
570+
],
571+
'One extension selected' => [
572+
'aSelected' => ['_0' => '_0'],
573+
'aExpectedModules' => ['combodo-sample-module' => true],
574+
'aExpectedExtensions' => ['combodo-sample'],
575+
],
576+
];
577+
}
578+
579+
/**
580+
* @dataProvider ProviderGetSelectedModules
581+
*/
582+
public function testGetSelectedModules($aSelectedExtensions, $aExpectedModules, $aExpectedExtensions)
583+
{
584+
$aExtensionsMapData = [
585+
'combodo-sample' => [
586+
'installed' => false,
587+
],
588+
];
589+
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData, ));
590+
591+
//GetSelectedModules
592+
$aStepInfo = [
593+
'title' => 'Extensions',
594+
'description' => '',
595+
'banner' => '',
596+
'options' => [
597+
[
598+
'extension_code' => 'combodo-sample',
599+
'title' => 'Sample extension',
600+
'description' => '',
601+
'more_info' => '',
602+
'default' => true,
603+
'modules' => [
604+
'combodo-sample-module',
605+
],
606+
'mandatory' => false,
607+
'source_label' => '',
608+
'uninstallable' => true,
609+
'missing' => false,
610+
],
611+
],
612+
];
613+
614+
$aModules = [];
615+
$aExtensions = [];
616+
$this->oStep->GetSelectedModules($aStepInfo, $aSelectedExtensions, $aModules, '', '', $aExtensions);
617+
$this->assertEquals($aExpectedModules, $aModules);
618+
$this->assertEquals($aExpectedExtensions, $aExtensions);
619+
}
620+
621+
public function testGetSelectedModulesShouldThrowAnExceptionWhenAnySelectedExtensionDoesNotHaveAnyAssociatedModules()
622+
{
623+
$aExtensionsMapData = [
624+
'combodo-sample' => [
625+
'installed' => false,
626+
],
627+
];
628+
$this->oStep->setExtensionMap(iTopExtensionsMapFake::createFromArray($aExtensionsMapData, ));
629+
630+
//GetSelectedModules
631+
$aStepInfo = [
632+
'title' => 'Extensions',
633+
'description' => '',
634+
'banner' => '',
635+
'options' => [
636+
[
637+
'extension_code' => 'combodo-sample',
638+
'title' => 'Sample extension',
639+
'description' => '',
640+
'more_info' => '',
641+
'default' => true,
642+
'modules' => [],
643+
'mandatory' => false,
644+
'source_label' => '',
645+
'uninstallable' => true,
646+
'missing' => false,
647+
],
648+
],
649+
];
650+
651+
$aModules = [];
652+
$aExtensions = [];
653+
$this->expectException('Exception');
654+
$this->oStep->GetSelectedModules($aStepInfo, ['_0' => '_0'], $aModules, '', '', $aExtensions);
655+
}
656+
562657
}

0 commit comments

Comments
 (0)