Separate Block into AbstractBlock, Block and SystemBlock
[lhc/web/wiklou.git] / tests / phpunit / includes / api / ApiBlockInfoTraitTest.php
index f05cfbc..932495a 100644 (file)
@@ -1,43 +1,42 @@
 <?php
 
 use Wikimedia\TestingAccessWrapper;
+use MediaWiki\Block\SystemBlock;
 
 /**
  * @covers ApiBlockInfoTrait
  */
 class ApiBlockInfoTraitTest extends MediaWikiTestCase {
-
-       public function testGetBlockInfo() {
-               $block = new Block();
+       /**
+        * @dataProvider provideGetBlockInfo
+        */
+       public function testGetBlockInfo( $block, $expectedInfo ) {
                $mock = $this->getMockForTrait( ApiBlockInfoTrait::class );
                $info = TestingAccessWrapper::newFromObject( $mock )->getBlockInfo( $block );
-               $subset = [
+               $subset = array_merge( [
                        'blockid' => null,
                        'blockedby' => '',
                        'blockedbyid' => 0,
                        'blockreason' => '',
                        'blockexpiry' => 'infinite',
-                       'blockpartial' => false,
-               ];
+               ], $expectedInfo );
                $this->assertArraySubset( $subset, $info );
        }
 
-       public function testGetBlockInfoPartial() {
-               $mock = $this->getMockForTrait( ApiBlockInfoTrait::class );
-
-               $block = new Block( [
-                       'sitewide' => false,
-               ] );
-               $info = TestingAccessWrapper::newFromObject( $mock )->getBlockInfo( $block );
-               $subset = [
-                       'blockid' => null,
-                       'blockedby' => '',
-                       'blockedbyid' => 0,
-                       'blockreason' => '',
-                       'blockexpiry' => 'infinite',
-                       'blockpartial' => true,
+       public static function provideGetBlockInfo() {
+               return [
+                       'Sitewide block' => [
+                               new Block(),
+                               [ 'blockpartial' => false ],
+                       ],
+                       'Partial block' => [
+                               new Block( [ 'sitewide' => false ] ),
+                               [ 'blockpartial' => true ],
+                       ],
+                       'System block' => [
+                               new SystemBlock( [ 'systemBlock' => 'proxy' ] ),
+                               [ 'systemblocktype' => 'proxy' ]
+                       ],
                ];
-               $this->assertArraySubset( $subset, $info );
        }
-
 }