Completed
Push — newparam ( 72433c...c5fad3 )
by Jeroen De
01:21
created

ResourceModulesTest   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 0
dl 0
loc 46
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testDependenciesExist() 0 16 3
A mapsModuleNameProvider() 0 7 3
A isMapsModule() 0 4 1
A getResourceLoader() 0 9 2
1
<?php
2
3
declare( strict_types = 1 );
4
5
namespace Maps\Tests\Integration;
6
7
use MediaWiki\MediaWikiServices;
8
use PHPUnit\Framework\TestCase;
9
use ResourceLoader;
10
11
class ResourceModulesTest extends TestCase {
12
13
	/**
14
	 * @dataProvider mapsModuleNameProvider
15
	 */
16
	public function testDependenciesExist( string $moduleName ) {
17
		$resourceLoader = $this->getResourceLoader();
18
		$module = $resourceLoader->getModule( $moduleName );
19
20
		if ( $module->getDependencies() === [] ) {
21
			$this->assertTrue( true );
22
		}
23
		else {
24
			foreach ( $module->getDependencies() as $dependency ) {
25
				$this->assertNotNull(
26
					$resourceLoader->getModule( $dependency ),
27
					'Dependency ' . $dependency . ' should exist'
28
				);
29
			}
30
		}
31
	}
32
33
	public function mapsModuleNameProvider() {
34
		foreach ( $this->getResourceLoader()->getModuleNames() as $name ) {
35
			if ( $this->isMapsModule( $name ) ) {
36
				yield $name => [ $name ];
37
			}
38
		}
39
	}
40
41
	private function isMapsModule( string $name ): bool {
42
		$modulePrefix = 'ext.maps.';
43
		return substr( $name, 0, strlen( $modulePrefix ) ) === $modulePrefix;
44
	}
45
46
	private function getResourceLoader(): ResourceLoader {
47
		$mwServices = MediaWikiServices::getInstance();
48
49
		if ( method_exists( $mwServices, 'getResourceLoader' ) ) {
50
			return $mwServices->getResourceLoader();
51
		}
52
53
		return new ResourceLoader();
54
	}
55
56
}
57