1<?php
2
3namespace MediaWiki\Tests\User;
4
5use FactoryArgTestTrait;
6use MediaWiki\User\UserGroupManager;
7use MediaWiki\User\UserGroupManagerFactory;
8use MediaWikiUnitTestCase;
9use ReflectionParameter;
10use Wikimedia\Rdbms\ILBFactory;
11use Wikimedia\Rdbms\ILoadBalancer;
12
13/**
14 * @covers \MediaWiki\User\UserGroupManagerFactory
15 */
16class UserGroupManagerFactoryTest extends MediaWikiUnitTestCase {
17	use FactoryArgTestTrait;
18
19	protected static function getFactoryClass() {
20		return UserGroupManagerFactory::class;
21	}
22
23	protected static function getInstanceClass() {
24		return UserGroupManager::class;
25	}
26
27	protected static function getExtraClassArgCount() {
28		return 1;
29	}
30
31	protected function getFactoryMethodName() {
32		return 'getUserGroupManager';
33	}
34
35	protected function getIgnoredParamNames() {
36		return [ 'hookContainer', 'configuredReadOnlyMode' ];
37	}
38
39	protected function getOverriddenMockValueForParam( ReflectionParameter $param ) {
40		if ( $param->getType() && $param->getType()->getName() === ILBFactory::class ) {
41			$mock = $this->createNoOpMock( ILBFactory::class, [ 'getMainLB' ] );
42			$mock->method( 'getMainLB' )
43				->willReturn( $this->createNoOpMock( ILoadBalancer::class ) );
44			return [ $mock ];
45		}
46		return [];
47	}
48}
49