‪TYPO3CMS  11.5
ModuleLoaderTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use Prophecy\PhpUnit\ProphecyTrait;
27 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
28 
29 class ‪ModuleLoaderTest extends UnitTestCase
30 {
31  use ProphecyTrait;
32 
37  {
38  $moduleLoader = new ‪ModuleLoader();
39  $result = $moduleLoader->validateSortAndInitializeModules([]);
40 
41  self::assertSame([], $result);
42  }
43 
44  public function ‪missingConfigurationDataProvider(): array
45  {
46  return [
47  'empty' => [['modulename' => []]],
48  'no array' => [['modulename' => '']],
49  ];
50  }
51 
58  {
59  $this->expectException(InvalidConfigurationException::class);
60  $this->expectExceptionCode(1519490105);
61 
62  $moduleLoader = new ‪ModuleLoader();
63  $moduleLoader->validateSortAndInitializeModules($configuration);
64  }
65 
66  public function ‪invalidConfigurationDataProvider(): array
67  {
68  return [
69  'module class name is no string' => [
70  [
71  'modulename' => ['module' => []],
72  ],
73  ],
74  'module class name is empty' => [
75  [
76  'modulename' => ['module' => ''],
77  ],
78  ],
79  'module class name is no valid class' => [
80  [
81  'modulename' => ['module' => 'nonExistingClassName'],
82  ],
83  ],
84  'module class name does not implement AdminPanelModuleInterface' => [
85  [
86  'modulename' => ['module' => \stdClass::class],
87  ],
88  ],
89  ];
90  }
91 
98  {
99  $this->expectException(InvalidConfigurationException::class);
100  $this->expectExceptionCode(1519490112);
101 
102  $moduleLoader = new ‪ModuleLoader();
103  $moduleLoader->validateSortAndInitializeModules($configuration);
104  }
105 
110  {
111  $config = [
112  'module1' => [
113  'module' => MainModuleFixture::class,
114  ],
115  ];
116 
117  $dependencyOrderingServiceProphecy = $this->prophesize(DependencyOrderingService::class);
118  GeneralUtility::addInstance(DependencyOrderingService::class, $dependencyOrderingServiceProphecy->reveal());
119  $dependencyOrderingServiceProphecy->orderByDependencies($config)->willReturn($config);
120 
121  $moduleLoader = new ModuleLoader();
122  $moduleLoader->validateSortAndInitializeModules($config);
123 
124  $dependencyOrderingServiceProphecy->orderByDependencies($config)->shouldHaveBeenCalled();
125  }
126 
131  {
132  $config = [
133  'module1' => [
134  'module' => MainModuleFixture::class,
135  ],
136  'module2' => [
137  'module' => DisabledMainModuleFixture::class,
138  ],
139  ];
140 
141  $dependencyOrderingServiceProphecy = $this->prophesize(DependencyOrderingService::class);
142  GeneralUtility::addInstance(DependencyOrderingService::class, $dependencyOrderingServiceProphecy->reveal());
143  $dependencyOrderingServiceProphecy->orderByDependencies($config)->willReturn($config);
144 
145  $moduleLoader = new ModuleLoader();
146  $result = $moduleLoader->validateSortAndInitializeModules($config);
147 
148  self::assertCount(1, $result);
149  self::assertInstanceOf(MainModuleFixture::class, $result['example']);
150  self::assertArrayNotHasKey('example-disabled', $result);
151  }
152 }
‪TYPO3\CMS\Adminpanel\Tests\Unit\Service\ModuleLoaderTest\validateSortAndInitializeModulesReturnsEmptyArrayIfNoModulesAreConfigured
‪validateSortAndInitializeModulesReturnsEmptyArrayIfNoModulesAreConfigured()
Definition: ModuleLoaderTest.php:35
‪TYPO3\CMS\Adminpanel\Tests\Unit\Service\ModuleLoaderTest\validateSortAndInitializeModulesThrowsExceptionIfModuleHasInvalidConfiguration
‪validateSortAndInitializeModulesThrowsExceptionIfModuleHasInvalidConfiguration(array $configuration)
Definition: ModuleLoaderTest.php:96
‪TYPO3\CMS\Adminpanel\Service\ModuleLoader
Definition: ModuleLoader.php:33
‪TYPO3\CMS\Adminpanel\Tests\Unit\Service\ModuleLoaderTest\validateSortAndInitializeModulesInstantiatesMainModulesOnlyIfEnabled
‪validateSortAndInitializeModulesInstantiatesMainModulesOnlyIfEnabled()
Definition: ModuleLoaderTest.php:129
‪TYPO3\CMS\Adminpanel\Tests\Unit\Service\ModuleLoaderTest\invalidConfigurationDataProvider
‪invalidConfigurationDataProvider()
Definition: ModuleLoaderTest.php:65
‪TYPO3\CMS\Adminpanel\Tests\Unit\Fixtures\MainModuleFixture
Definition: MainModuleFixture.php:39
‪TYPO3\CMS\Adminpanel\Tests\Unit\Service\ModuleLoaderTest
Definition: ModuleLoaderTest.php:30
‪TYPO3\CMS\Adminpanel\Exceptions\InvalidConfigurationException
Definition: InvalidConfigurationException.php:23
‪TYPO3\CMS\Core\Service\DependencyOrderingService
Definition: DependencyOrderingService.php:32
‪TYPO3\CMS\Adminpanel\Tests\Unit\Service\ModuleLoaderTest\validateSortAndInitializeModulesThrowsExceptionIfModuleHasMissingConfiguration
‪validateSortAndInitializeModulesThrowsExceptionIfModuleHasMissingConfiguration(array $configuration)
Definition: ModuleLoaderTest.php:56
‪TYPO3\CMS\Adminpanel\Tests\Unit\Fixtures\DisabledMainModuleFixture
Definition: DisabledMainModuleFixture.php:21
‪TYPO3\CMS\Adminpanel\Tests\Unit\Service
Definition: ConfigurationServiceTest.php:18
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Adminpanel\Tests\Unit\Service\ModuleLoaderTest\validateSortAndInitializeModulesOrdersModulesWithDependencyOrderingService
‪validateSortAndInitializeModulesOrdersModulesWithDependencyOrderingService()
Definition: ModuleLoaderTest.php:108
‪TYPO3\CMS\Adminpanel\Tests\Unit\Service\ModuleLoaderTest\missingConfigurationDataProvider
‪missingConfigurationDataProvider()
Definition: ModuleLoaderTest.php:43