Merge "Make refreshLinksJob explicitly check the cache rev ID"
[lhc/web/wiklou.git] / tests / phpunit / includes / MediaWikiServicesTest.php
1 <?php
2 use Liuggio\StatsdClient\Factory\StatsdDataFactory;
3 use MediaWiki\MediaWikiServices;
4
5 /**
6 * @covers MediaWiki\MediaWikiServices
7 *
8 * @group MediaWiki
9 */
10 class MediaWikiServicesTest extends PHPUnit_Framework_TestCase {
11
12 public function testGetInstance() {
13 $services = MediaWikiServices::getInstance();
14 $this->assertInstanceOf( 'MediaWiki\\MediaWikiServices', $services );
15 }
16
17 public function provideGetters() {
18 // NOTE: This should list all service getters defined in MediaWikiServices.
19 // NOTE: For every test case defined here there should be a corresponding
20 // test case defined in provideGetService().
21 return [
22 'BootstrapConfig' => [ 'getBootstrapConfig', Config::class ],
23 'ConfigFactory' => [ 'getConfigFactory', ConfigFactory::class ],
24 'MainConfig' => [ 'getMainConfig', Config::class ],
25 'SiteStore' => [ 'getSiteStore', SiteStore::class ],
26 'SiteLookup' => [ 'getSiteLookup', SiteLookup::class ],
27 'StatsdDataFactory' => [ 'getStatsdDataFactory', StatsdDataFactory::class ],
28 'EventRelayerGroup' => [ 'getEventRelayerGroup', EventRelayerGroup::class ],
29 'SearchEngine' => [ 'newSearchEngine', SearchEngine::class ],
30 'SearchEngineFactory' => [ 'getSearchEngineFactory', SearchEngineFactory::class ],
31 'SearchEngineConfig' => [ 'getSearchEngineConfig', SearchEngineConfig::class ],
32 'SkinFactory' => [ 'getSkinFactory', SkinFactory::class ],
33 ];
34 }
35
36 /**
37 * @dataProvider provideGetters
38 */
39 public function testGetters( $getter, $type ) {
40 // Test against the default instance, since the dummy will not know the default services.
41 $services = MediaWikiServices::getInstance();
42 $service = $services->$getter();
43 $this->assertInstanceOf( $type, $service );
44 }
45
46 public function provideGetService() {
47 // NOTE: This should list all service getters defined in ServiceWiring.php.
48 // NOTE: For every test case defined here there should be a corresponding
49 // test case defined in provideGetters().
50 return [
51 'BootstrapConfig' => [ 'BootstrapConfig', Config::class ],
52 'ConfigFactory' => [ 'ConfigFactory', ConfigFactory::class ],
53 'MainConfig' => [ 'MainConfig', Config::class ],
54 'SiteStore' => [ 'SiteStore', SiteStore::class ],
55 'SiteLookup' => [ 'SiteLookup', SiteLookup::class ],
56 'StatsdDataFactory' => [ 'StatsdDataFactory', StatsdDataFactory::class ],
57 'EventRelayerGroup' => [ 'EventRelayerGroup', EventRelayerGroup::class ],
58 'SearchEngineFactory' => [ 'SearchEngineFactory', SearchEngineFactory::class ],
59 'SearchEngineConfig' => [ 'SearchEngineConfig', SearchEngineConfig::class ],
60 'SkinFactory' => [ 'SkinFactory', SkinFactory::class ],
61 ];
62 }
63
64 /**
65 * @dataProvider provideGetService
66 */
67 public function testGetService( $name, $type ) {
68 // Test against the default instance, since the dummy will not know the default services.
69 $services = MediaWikiServices::getInstance();
70
71 $service = $services->getService( $name );
72 $this->assertInstanceOf( $type, $service );
73 }
74
75 public function testDefaultServiceInstantiation() {
76 // Check all services in the default instance, not a dummy instance!
77 // Note that we instantiate all services here, including any that
78 // were registered by extensions.
79 $services = MediaWikiServices::getInstance();
80 $names = $services->getServiceNames();
81
82 foreach ( $names as $name ) {
83 $this->assertTrue( $services->hasService( $name ) );
84 $service = $services->getService( $name );
85 $this->assertInternalType( 'object', $service );
86 }
87 }
88
89 }