diff options
Diffstat (limited to 'www/wiki/extensions/Maps/tests/Integration/ResourceModulesTest.php')
-rw-r--r-- | www/wiki/extensions/Maps/tests/Integration/ResourceModulesTest.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/www/wiki/extensions/Maps/tests/Integration/ResourceModulesTest.php b/www/wiki/extensions/Maps/tests/Integration/ResourceModulesTest.php new file mode 100644 index 00000000..d6f2a6e5 --- /dev/null +++ b/www/wiki/extensions/Maps/tests/Integration/ResourceModulesTest.php @@ -0,0 +1,56 @@ +<?php + +declare( strict_types = 1 ); + +namespace Maps\Tests\Integration; + +use MediaWiki\MediaWikiServices; +use PHPUnit\Framework\TestCase; +use ResourceLoader; + +class ResourceModulesTest extends TestCase { + + /** + * @dataProvider mapsModuleNameProvider + */ + public function testDependenciesExist( string $moduleName ) { + $resourceLoader = $this->getResourceLoader(); + $module = $resourceLoader->getModule( $moduleName ); + + if ( $module->getDependencies() === [] ) { + $this->assertTrue( true ); + } + else { + foreach ( $module->getDependencies() as $dependency ) { + $this->assertNotNull( + $resourceLoader->getModule( $dependency ), + 'Dependency ' . $dependency . ' should exist' + ); + } + } + } + + public function mapsModuleNameProvider() { + foreach ( $this->getResourceLoader()->getModuleNames() as $name ) { + if ( $this->isMapsModule( $name ) ) { + yield $name => [ $name ]; + } + } + } + + private function isMapsModule( string $name ): bool { + $modulePrefix = 'ext.maps.'; + return substr( $name, 0, strlen( $modulePrefix ) ) === $modulePrefix; + } + + private function getResourceLoader(): ResourceLoader { + $mwServices = MediaWikiServices::getInstance(); + + if ( method_exists( $mwServices, 'getResourceLoader' ) ) { + return $mwServices->getResourceLoader(); + } + + return new ResourceLoader(); + } + +} |