3 use Wikimedia\TestingAccessWrapper
;
4 use MediaWiki\Block\DatabaseBlock
;
5 use MediaWiki\Block\SystemBlock
;
8 * @covers ApiBlockInfoTrait
10 class ApiBlockInfoTraitTest
extends \MediaWikiUnitTestCase
{
12 protected function setUp() {
15 $lbMock = $this->createMock( LoadBalancer
::class );
16 $lbMock->expects( $this->any() )
17 ->method( 'getConnection' )
18 ->willReturn( $this->createMock( Database
::class ) );
20 $loadBalancerMockFactory = function () use ( $lbMock ): LoadBalancer
{
24 $this->overrideMwServices( [ 'DBLoadBalancer' => $loadBalancerMockFactory ] );
28 * @dataProvider provideGetBlockDetails
30 public function testGetBlockDetails( $blockFactory, $expectedInfo ) {
31 $mock = $this->getMockForTrait( ApiBlockInfoTrait
::class );
32 $info = TestingAccessWrapper
::newFromObject( $mock )->getBlockDetails( $blockFactory() );
33 $subset = array_merge( [
38 'blockexpiry' => 'infinite',
40 $this->assertArraySubset( $subset, $info );
43 public static function provideGetBlockDetails() {
46 // Defer instantiation to avoid connecting to DB
48 return new DatabaseBlock();
50 [ 'blockpartial' => false ],
54 return new DatabaseBlock( [ 'sitewide' => false ] );
56 [ 'blockpartial' => true ],
60 return new SystemBlock( [ 'systemBlock' => 'proxy' ] );
62 [ 'systemblocktype' => 'proxy' ]