RevisionIntegrationTest more newFromArchiveRow tests
authoraddshore <addshorewiki@gmail.com>
Tue, 17 Oct 2017 11:35:28 +0000 (12:35 +0100)
committerAddshore <addshorewiki@gmail.com>
Tue, 17 Oct 2017 22:21:38 +0000 (22:21 +0000)
There were a couple of code paths that were not tested before
for different combinations of selected fields, these are now
covered.

Change-Id: Ifd438e5c97a5f32a1744c58bd4cf0303ddb32cfc

tests/phpunit/includes/RevisionIntegrationTest.php

index ac7331a..41302e0 100644 (file)
@@ -225,16 +225,52 @@ class RevisionIntegrationTest extends MediaWikiTestCase {
                $this->assertRevEquals( $orig, $rev );
        }
 
                $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
         */
         * @covers Revision::newFromArchiveRow
         */
-       public function testNewFromArchiveRow( $contentHandlerUseDB ) {
+       public function testNewFromArchiveRow( $contentHandlerUseDB, $selectModifier ) {
                $this->setMwGlobals( 'wgContentHandlerUseDB', $contentHandlerUseDB );
 
                $page = $this->createPage(
                $this->setMwGlobals( 'wgContentHandlerUseDB', $contentHandlerUseDB );
 
                $page = $this->createPage(
@@ -246,8 +282,9 @@ class RevisionIntegrationTest extends MediaWikiTestCase {
                $page->doDeleteArticle( 'test Revision::newFromArchiveRow' );
 
                $dbr = wfGetDB( DB_REPLICA );
                $page->doDeleteArticle( 'test Revision::newFromArchiveRow' );
 
                $dbr = wfGetDB( DB_REPLICA );
+               $selectFields = $selectModifier( Revision::selectArchiveFields() );
                $res = $dbr->select(
                $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' );
 
                );
                $this->assertTrue( is_object( $res ), 'query failed' );
 
@@ -259,6 +296,33 @@ class RevisionIntegrationTest extends MediaWikiTestCase {
                $this->assertRevEquals( $orig, $rev );
        }
 
                $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
         */
        /**
         * @covers Revision::newFromId
         */