Merge "Promote LivePreview from its experimental state"
[lhc/web/wiklou.git] / tests / phpunit / includes / BlockTest.php
index 32fc2c5..1974162 100644 (file)
@@ -6,7 +6,9 @@
  */
 class BlockTest extends MediaWikiLangTestCase {
 
-       private $block, $madeAt;
+       /** @var Block */
+       private $block;
+       private $madeAt;
 
        /* variable used to save up the blockID we insert in this test suite */
        private $blockId;
@@ -66,42 +68,37 @@ class BlockTest extends MediaWikiLangTestCase {
                }
        }
 
-       function testInitializerFunctionsReturnCorrectBlock() {
-               // $this->dumpBlocks();
-
-               $this->assertTrue( $this->block->equals( Block::newFromTarget( 'UTBlockee' ) ), "newFromTarget() returns the same block as the one that was made" );
-
-               $this->assertTrue( $this->block->equals( Block::newFromID( $this->blockId ) ), "newFromID() returns the same block as the one that was made" );
+       /**
+        * @covers Block::newFromTarget
+        */
+       public function testINewFromTargetReturnsCorrectBlock() {
+               $this->assertTrue(
+                       $this->block->equals( Block::newFromTarget( 'UTBlockee' ) ),
+                       "newFromTarget() returns the same block as the one that was made"
+               );
        }
 
        /**
-        * per bug 26425
+        * @covers Block::newFromID
         */
-       function testBug26425BlockTimestampDefaultsToTime() {
-               // delta to stop one-off errors when things happen to go over a second mark.
-               $delta = abs( $this->madeAt - $this->block->mTimestamp );
-               $this->assertLessThan( 2, $delta, "If no timestamp is specified, the block is recorded as time()" );
+       public function testINewFromIDReturnsCorrectBlock() {
+               $this->assertTrue(
+                       $this->block->equals( Block::newFromID( $this->blockId ) ),
+                       "newFromID() returns the same block as the one that was made"
+               );
        }
 
        /**
-        * This is the method previously used to load block info in CheckUser etc
-        * passing an empty value (empty string, null, etc) as the ip parameter bypasses IP lookup checks.
-        *
-        * This stopped working with r84475 and friends: regression being fixed for bug 29116.
-        *
-        * @dataProvider provideBug29116Data
+        * per bug 26425
         */
-       function testBug29116LoadWithEmptyIp( $vagueTarget ) {
-               $this->hideDeprecated( 'Block::load' );
-
-               $uid = User::idFromName( 'UTBlockee' );
-               $this->assertTrue( ( $uid > 0 ), 'Must be able to look up the target user during tests' );
-
-               $block = new Block();
-               $ok = $block->load( $vagueTarget, $uid );
-               $this->assertTrue( $ok, "Block->load() with empty IP and user ID '$uid' should return a block" );
-
-               $this->assertTrue( $this->block->equals( $block ), "Block->load() returns the same block as the one that was made when given empty ip param " . var_export( $vagueTarget, true ) );
+       public function testBug26425BlockTimestampDefaultsToTime() {
+               // delta to stop one-off errors when things happen to go over a second mark.
+               $delta = abs( $this->madeAt - $this->block->mTimestamp );
+               $this->assertLessThan(
+                       2,
+                       $delta,
+                       "If no timestamp is specified, the block is recorded as time()"
+               );
        }
 
        /**
@@ -110,10 +107,15 @@ class BlockTest extends MediaWikiLangTestCase {
         * had. Regression bug 29116.
         *
         * @dataProvider provideBug29116Data
+        * @covers Block::newFromTarget
         */
-       function testBug29116NewFromTargetWithEmptyIp( $vagueTarget ) {
+       public function testBug29116NewFromTargetWithEmptyIp( $vagueTarget ) {
                $block = Block::newFromTarget( 'UTBlockee', $vagueTarget );
-               $this->assertTrue( $this->block->equals( $block ), "newFromTarget() returns the same block as the one that was made when given empty vagueTarget param " . var_export( $vagueTarget, true ) );
+               $this->assertTrue(
+                       $this->block->equals( $block ),
+                       "newFromTarget() returns the same block as the one that was made when "
+                               . "given empty vagueTarget param " . var_export( $vagueTarget, true )
+               );
        }
 
        public static function provideBug29116Data() {
@@ -124,10 +126,14 @@ class BlockTest extends MediaWikiLangTestCase {
                );
        }
 
-       function testBlockedUserCanNotCreateAccount() {
+       /**
+        * @covers Block::prevents
+        */
+       public function testBlockedUserCanNotCreateAccount() {
                $username = 'BlockedUserToCreateAccountWith';
                $u = User::newFromName( $username );
                $u->setPassword( 'NotRandomPass' );
+               $u->setId( 14146 );
                $u->addToDatabase();
                unset( $u );
 
@@ -184,7 +190,10 @@ class BlockTest extends MediaWikiLangTestCase {
                );
        }
 
-       function testCrappyCrossWikiBlocks() {
+       /**
+        * @covers Block::insert
+        */
+       public function testCrappyCrossWikiBlocks() {
                // Delete the last round's block if it's still there
                $oldBlock = Block::newFromTarget( 'UserOnForeignWiki' );
                if ( $oldBlock ) {
@@ -192,6 +201,12 @@ class BlockTest extends MediaWikiLangTestCase {
                        $oldBlock->delete();
                }
 
+               // Local perspective (blockee on current wiki)...
+               $user = User::newFromName( 'UserOnForeignWiki' );
+               $user->addToDatabase();
+               // Set user ID to match the test value
+               $this->db->update( 'user', array( 'user_id' => 14146 ), array( 'user_id' => $user->getId() ) );
+
                // Foreign perspective (blockee not on current wiki)...
                $block = new Block(
                        /* $address */ 'UserOnForeignWiki',
@@ -213,15 +228,14 @@ class BlockTest extends MediaWikiLangTestCase {
                $res = $block->insert( $this->db );
                $this->assertTrue( (bool)$res['id'], 'Block succeeded' );
 
-               // Local perspective (blockee on current wiki)...
-               $user = User::newFromName( 'UserOnForeignWiki' );
-               $user->addToDatabase();
-               // Set user ID to match the test value
-               $this->db->update( 'user', array( 'user_id' => 14146 ), array( 'user_id' => $user->getId() ) );
                $user = null; // clear
 
                $block = Block::newFromID( $res['id'] );
-               $this->assertEquals( 'UserOnForeignWiki', $block->getTarget()->getName(), 'Correct blockee name' );
+               $this->assertEquals(
+                       'UserOnForeignWiki',
+                       $block->getTarget()->getName(),
+                       'Correct blockee name'
+               );
                $this->assertEquals( '14146', $block->getTarget()->getId(), 'Correct blockee id' );
                $this->assertEquals( 'MetaWikiUser', $block->getBlocker(), 'Correct blocker name' );
                $this->assertEquals( 'MetaWikiUser', $block->getByName(), 'Correct blocker name' );
@@ -343,8 +357,10 @@ class BlockTest extends MediaWikiLangTestCase {
 
        /**
         * @dataProvider providerXff
+        * @covers Block::getBlocksForIPList
+        * @covers Block::chooseBlock
         */
-       function testBlocksOnXff( $xff, $exCount, $exResult ) {
+       public function testBlocksOnXff( $xff, $exCount, $exResult ) {
                $list = array_map( 'trim', explode( ',', $xff ) );
                $xffblocks = Block::getBlocksForIPList( $list, true );
                $this->assertEquals( $exCount, count( $xffblocks ), 'Number of blocks for ' . $xff );