Merge "Revision tests, make test for constructFromRowArray a unit test"
[lhc/web/wiklou.git] / tests / phpunit / includes / RevisionIntegrationTest.php
index ac7331a..9dcd0cf 100644 (file)
@@ -151,27 +151,6 @@ class RevisionIntegrationTest extends MediaWikiTestCase {
                $this->assertEquals( $orig->getSha1(), $rev->getSha1() );
        }
 
-       /**
-        * @covers Revision::__construct
-        */
-       public function testConstructFromRow() {
-               $latestRevisionId = $this->testPage->getLatest();
-               $latestRevision = $this->testPage->getRevision();
-
-               $dbr = wfGetDB( DB_REPLICA );
-               $res = $dbr->select(
-                       'revision',
-                       Revision::selectFields(),
-                       [ 'rev_id' => $latestRevisionId ]
-               );
-               $this->assertTrue( is_object( $res ), 'query failed' );
-
-               $row = $res->fetchObject();
-               $res->free();
-
-               $this->assertRevEquals( $latestRevision, new Revision( $row ) );
-       }
-
        /**
         * @covers Revision::newFromTitle
         */
@@ -225,16 +204,52 @@ class RevisionIntegrationTest extends MediaWikiTestCase {
                $this->assertRevEquals( $orig, $rev );
        }
 
-       public function provideTrueFalse() {
-               yield [ true ];
-               yield [ false ];
+       public function provideNewFromArchiveRow() {
+               yield [
+                       true,
+                       function ( $f ) {
+                               return $f;
+                       },
+               ];
+               yield [
+                       false,
+                       function ( $f ) {
+                               return $f;
+                       },
+               ];
+               yield [
+                       true,
+                       function ( $f ) {
+                               return $f + [ 'ar_namespace', 'ar_title' ];
+                       },
+               ];
+               yield [
+                       false,
+                       function ( $f ) {
+                               return $f + [ 'ar_namespace', 'ar_title' ];
+                       },
+               ];
+               yield [
+                       true,
+                       function ( $f ) {
+                               unset( $f['ar_text_id'] );
+                               return $f;
+                       },
+               ];
+               yield [
+                       false,
+                       function ( $f ) {
+                               unset( $f['ar_text_id'] );
+                               return $f;
+                       },
+               ];
        }
 
        /**
-        * @dataProvider provideTrueFalse
+        * @dataProvider provideNewFromArchiveRow
         * @covers Revision::newFromArchiveRow
         */
-       public function testNewFromArchiveRow( $contentHandlerUseDB ) {
+       public function testNewFromArchiveRow( $contentHandlerUseDB, $selectModifier ) {
                $this->setMwGlobals( 'wgContentHandlerUseDB', $contentHandlerUseDB );
 
                $page = $this->createPage(
@@ -246,8 +261,9 @@ class RevisionIntegrationTest extends MediaWikiTestCase {
                $page->doDeleteArticle( 'test Revision::newFromArchiveRow' );
 
                $dbr = wfGetDB( DB_REPLICA );
+               $selectFields = $selectModifier( Revision::selectArchiveFields() );
                $res = $dbr->select(
-                       'archive', Revision::selectArchiveFields(), [ 'ar_rev_id' => $orig->getId() ]
+                       'archive', $selectFields, [ 'ar_rev_id' => $orig->getId() ]
                );
                $this->assertTrue( is_object( $res ), 'query failed' );
 
@@ -259,6 +275,33 @@ class RevisionIntegrationTest extends MediaWikiTestCase {
                $this->assertRevEquals( $orig, $rev );
        }
 
+       /**
+        * @covers Revision::newFromArchiveRow
+        */
+       public function testNewFromArchiveRowOverrides() {
+               $page = $this->createPage(
+                       'RevisionStorageTest_testNewFromArchiveRow',
+                       'Lorem Ipsum',
+                       CONTENT_MODEL_WIKITEXT
+               );
+               $orig = $page->getRevision();
+               $page->doDeleteArticle( 'test Revision::newFromArchiveRow' );
+
+               $dbr = wfGetDB( DB_REPLICA );
+               $res = $dbr->select(
+                       'archive', Revision::selectArchiveFields(), [ 'ar_rev_id' => $orig->getId() ]
+               );
+               $this->assertTrue( is_object( $res ), 'query failed' );
+
+               $row = $res->fetchObject();
+               $res->free();
+
+               $rev = Revision::newFromArchiveRow( $row, [ 'comment' => 'SOMEOVERRIDE' ] );
+
+               $this->assertNotEquals( $orig->getComment(), $rev->getComment() );
+               $this->assertEquals( 'SOMEOVERRIDE', $rev->getComment() );
+       }
+
        /**
         * @covers Revision::newFromId
         */