summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Maps/tests/Integration/ResourceModulesTest.php
blob: d6f2a6e5982f5ab772f78c12e09b5f23f2287854 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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();
	}

}