Addshore has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/406142 )

Change subject: Mock CommentStore in RevisionTest
......................................................................

Mock CommentStore in RevisionTest

Change-Id: I16b00a5514547d93a2308393098e3b363505374e
---
M tests/phpunit/includes/RevisionTest.php
1 file changed, 71 insertions(+), 303 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/42/406142/1

diff --git a/tests/phpunit/includes/RevisionTest.php 
b/tests/phpunit/includes/RevisionTest.php
index 73d69a5..54d60c4 100644
--- a/tests/phpunit/includes/RevisionTest.php
+++ b/tests/phpunit/includes/RevisionTest.php
@@ -882,6 +882,31 @@
                );
        }
 
+       private function overrideCommentStoreFactory() {
+               $mockStore = $this->getMockBuilder( CommentStore::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $mockStore->expects( $this->any() )
+                       ->method( 'getFields' )
+                       ->willReturn( [ 'commentstore' => 'fields' ] );
+               $mockStore->expects( $this->any() )
+                       ->method( 'getJoin' )
+                       ->willReturn( [
+                               'tables' => [ 'commentstore-table' ],
+                               'fields' => [ 'commentstore-field' ],
+                               'joins' => [ 'commentstore-join' ],
+                       ] );
+
+               $mockFactory = $this->getMockBuilder( 
CommentStoreFactory::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $mockFactory->expects( $this->any() )
+                       ->method( 'newForKey' )
+                       ->willReturn( $mockStore );
+
+               $this->setService( 'CommentStoreFactory', $mockFactory );
+       }
+
        public function provideSelectFields() {
                yield [
                        true,
@@ -897,9 +922,7 @@
                                'rev_len',
                                'rev_parent_id',
                                'rev_sha1',
-                               'rev_comment_text' => 'rev_comment',
-                               'rev_comment_data' => 'NULL',
-                               'rev_comment_cid' => 'NULL',
+                               'commentstore' => 'fields',
                                'rev_content_format',
                                'rev_content_model',
                        ]
@@ -918,9 +941,7 @@
                                'rev_len',
                                'rev_parent_id',
                                'rev_sha1',
-                               'rev_comment_text' => 'rev_comment',
-                               'rev_comment_data' => 'NULL',
-                               'rev_comment_cid' => 'NULL',
+                               'commentstore' => 'fields',
                        ]
                ];
        }
@@ -928,12 +949,11 @@
        /**
         * @dataProvider provideSelectFields
         * @covers Revision::selectFields
-        * @todo a true unit test would mock CommentStore
         */
        public function testSelectFields( $contentHandlerUseDB, $expected ) {
+               $this->overrideCommentStoreFactory();
                $this->hideDeprecated( 'Revision::selectFields' );
                $this->setMwGlobals( 'wgContentHandlerUseDB', 
$contentHandlerUseDB );
-               $this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', 
MIGRATION_OLD );
                $this->assertEquals( $expected, Revision::selectFields() );
        }
 
@@ -954,9 +974,7 @@
                                'ar_len',
                                'ar_parent_id',
                                'ar_sha1',
-                               'ar_comment_text' => 'ar_comment',
-                               'ar_comment_data' => 'NULL',
-                               'ar_comment_cid' => 'NULL',
+                               'commentstore' => 'fields',
                                'ar_content_format',
                                'ar_content_model',
                        ]
@@ -977,9 +995,7 @@
                                'ar_len',
                                'ar_parent_id',
                                'ar_sha1',
-                               'ar_comment_text' => 'ar_comment',
-                               'ar_comment_data' => 'NULL',
-                               'ar_comment_cid' => 'NULL',
+                               'commentstore' => 'fields',
                        ]
                ];
        }
@@ -987,12 +1003,11 @@
        /**
         * @dataProvider provideSelectArchiveFields
         * @covers Revision::selectArchiveFields
-        * @todo a true unit test would mock CommentStore
         */
        public function testSelectArchiveFields( $contentHandlerUseDB, 
$expected ) {
+               $this->overrideCommentStoreFactory();
                $this->hideDeprecated( 'Revision::selectArchiveFields' );
                $this->setMwGlobals( 'wgContentHandlerUseDB', 
$contentHandlerUseDB );
-               $this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', 
MIGRATION_OLD );
                $this->assertEquals( $expected, Revision::selectArchiveFields() 
);
        }
 
@@ -1042,13 +1057,15 @@
        }
 
        public function provideGetArchiveQueryInfo() {
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage OLD' => [
+               yield 'wgContentHandlerUseDB false' => [
                        [
                                'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_OLD,
                        ],
                        [
-                               'tables' => [ 'archive' ],
+                               'tables' => [
+                                       'archive',
+                                       'commentstore-table',
+                               ],
                                'fields' => [
                                        'ar_id',
                                        'ar_page_id',
@@ -1065,20 +1082,20 @@
                                        'ar_len',
                                        'ar_parent_id',
                                        'ar_sha1',
-                                       'ar_comment_text' => 'ar_comment',
-                                       'ar_comment_data' => 'NULL',
-                                       'ar_comment_cid' => 'NULL',
+                                       'commentstore-field'
                                ],
-                               'joins' => [],
+                               'joins' => [ 'commentstore-join' ],
                        ]
                ];
-               yield 'wgContentHandlerUseDB true, 
wgCommentTableSchemaMigrationStage OLD' => [
+               yield 'wgContentHandlerUseDB true' => [
                        [
                                'wgContentHandlerUseDB' => true,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_OLD,
                        ],
                        [
-                               'tables' => [ 'archive' ],
+                               'tables' => [
+                                       'archive',
+                                       'commentstore-table',
+                               ],
                                'fields' => [
                                        'ar_id',
                                        'ar_page_id',
@@ -1095,127 +1112,11 @@
                                        'ar_len',
                                        'ar_parent_id',
                                        'ar_sha1',
-                                       'ar_comment_text' => 'ar_comment',
-                                       'ar_comment_data' => 'NULL',
-                                       'ar_comment_cid' => 'NULL',
+                                       'commentstore-field',
                                        'ar_content_format',
                                        'ar_content_model',
                                ],
-                               'joins' => [],
-                       ]
-               ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage WRITE_BOTH' => [
-                       [
-                               'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_WRITE_BOTH,
-                       ],
-                       [
-                               'tables' => [
-                                       'archive',
-                                       'comment_ar_comment' => 'comment',
-                               ],
-                               'fields' => [
-                                       'ar_id',
-                                       'ar_page_id',
-                                       'ar_namespace',
-                                       'ar_title',
-                                       'ar_rev_id',
-                                       'ar_text',
-                                       'ar_text_id',
-                                       'ar_timestamp',
-                                       'ar_user_text',
-                                       'ar_user',
-                                       'ar_minor_edit',
-                                       'ar_deleted',
-                                       'ar_len',
-                                       'ar_parent_id',
-                                       'ar_sha1',
-                                       'ar_comment_text' => 'COALESCE( 
comment_ar_comment.comment_text, ar_comment )',
-                                       'ar_comment_data' => 
'comment_ar_comment.comment_data',
-                                       'ar_comment_cid' => 
'comment_ar_comment.comment_id',
-                               ],
-                               'joins' => [
-                                       'comment_ar_comment' => [
-                                               'LEFT JOIN',
-                                               'comment_ar_comment.comment_id 
= ar_comment_id',
-                                       ],
-                               ],
-                       ]
-               ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage WRITE_NEW' => [
-                       [
-                               'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_WRITE_NEW,
-                       ],
-                       [
-                               'tables' => [
-                                       'archive',
-                                       'comment_ar_comment' => 'comment',
-                               ],
-                               'fields' => [
-                                       'ar_id',
-                                       'ar_page_id',
-                                       'ar_namespace',
-                                       'ar_title',
-                                       'ar_rev_id',
-                                       'ar_text',
-                                       'ar_text_id',
-                                       'ar_timestamp',
-                                       'ar_user_text',
-                                       'ar_user',
-                                       'ar_minor_edit',
-                                       'ar_deleted',
-                                       'ar_len',
-                                       'ar_parent_id',
-                                       'ar_sha1',
-                                       'ar_comment_text' => 'COALESCE( 
comment_ar_comment.comment_text, ar_comment )',
-                                       'ar_comment_data' => 
'comment_ar_comment.comment_data',
-                                       'ar_comment_cid' => 
'comment_ar_comment.comment_id',
-                               ],
-                               'joins' => [
-                                       'comment_ar_comment' => [
-                                               'LEFT JOIN',
-                                               'comment_ar_comment.comment_id 
= ar_comment_id',
-                                       ],
-                               ],
-                       ]
-               ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage NEW' => [
-                       [
-                               'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_NEW,
-                       ],
-                       [
-                               'tables' => [
-                                       'archive',
-                                       'comment_ar_comment' => 'comment',
-                               ],
-                               'fields' => [
-                                       'ar_id',
-                                       'ar_page_id',
-                                       'ar_namespace',
-                                       'ar_title',
-                                       'ar_rev_id',
-                                       'ar_text',
-                                       'ar_text_id',
-                                       'ar_timestamp',
-                                       'ar_user_text',
-                                       'ar_user',
-                                       'ar_minor_edit',
-                                       'ar_deleted',
-                                       'ar_len',
-                                       'ar_parent_id',
-                                       'ar_sha1',
-                                       'ar_comment_text' => 
'comment_ar_comment.comment_text',
-                                       'ar_comment_data' => 
'comment_ar_comment.comment_data',
-                                       'ar_comment_cid' => 
'comment_ar_comment.comment_id',
-                               ],
-                               'joins' => [
-                                       'comment_ar_comment' => [
-                                               'JOIN',
-                                               'comment_ar_comment.comment_id 
= ar_comment_id',
-                                       ],
-                               ],
+                               'joins' => [ 'commentstore-join' ],
                        ]
                ];
        }
@@ -1226,11 +1127,11 @@
         */
        public function testGetArchiveQueryInfo( $globals, $expected ) {
                $this->setMwGlobals( $globals );
+               $this->overrideCommentStoreFactory();
 
                $revisionStore = $this->getRevisionStore();
                $revisionStore->setContentHandlerUseDB( 
$globals['wgContentHandlerUseDB'] );
                $this->setService( 'RevisionStore', $revisionStore );
-
                $this->assertEquals(
                        $expected,
                        Revision::getArchiveQueryInfo()
@@ -1238,14 +1139,13 @@
        }
 
        public function provideGetQueryInfo() {
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage OLD, opts none' => [
+               yield 'wgContentHandlerUseDB false, opts none' => [
                        [
                                'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_OLD,
                        ],
                        [],
                        [
-                               'tables' => [ 'revision' ],
+                               'tables' => [ 'revision', 'commentstore-table' 
],
                                'fields' => [
                                        'rev_id',
                                        'rev_page',
@@ -1258,21 +1158,18 @@
                                        'rev_len',
                                        'rev_parent_id',
                                        'rev_sha1',
-                                       'rev_comment_text' => 'rev_comment',
-                                       'rev_comment_data' => 'NULL',
-                                       'rev_comment_cid' => 'NULL',
+                                       'commentstore-field',
                                ],
-                               'joins' => [],
+                               'joins' => [ 'commentstore-join' ],
                        ],
                ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage OLD, opts page' => [
+               yield 'wgContentHandlerUseDB false, opts page' => [
                        [
                                'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_OLD,
                        ],
                        [ 'page' ],
                        [
-                               'tables' => [ 'revision', 'page' ],
+                               'tables' => [ 'revision', 'commentstore-table', 
'page' ],
                                'fields' => [
                                        'rev_id',
                                        'rev_page',
@@ -1285,9 +1182,7 @@
                                        'rev_len',
                                        'rev_parent_id',
                                        'rev_sha1',
-                                       'rev_comment_text' => 'rev_comment',
-                                       'rev_comment_data' => 'NULL',
-                                       'rev_comment_cid' => 'NULL',
+                                       'commentstore-field',
                                        'page_namespace',
                                        'page_title',
                                        'page_id',
@@ -1300,17 +1195,17 @@
                                                'INNER JOIN',
                                                [ 'page_id = rev_page' ],
                                        ],
+                                       'commentstore-join',
                                ],
                        ],
                ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage OLD, opts user' => [
+               yield 'wgContentHandlerUseDB false, opts user' => [
                        [
                                'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_OLD,
                        ],
                        [ 'user' ],
                        [
-                               'tables' => [ 'revision', 'user' ],
+                               'tables' => [ 'revision', 'commentstore-table', 
'user' ],
                                'fields' => [
                                        'rev_id',
                                        'rev_page',
@@ -1323,9 +1218,7 @@
                                        'rev_len',
                                        'rev_parent_id',
                                        'rev_sha1',
-                                       'rev_comment_text' => 'rev_comment',
-                                       'rev_comment_data' => 'NULL',
-                                       'rev_comment_cid' => 'NULL',
+                                       'commentstore-field',
                                        'user_name',
                                ],
                                'joins' => [
@@ -1336,17 +1229,17 @@
                                                        'user_id = rev_user',
                                                ],
                                        ],
+                                       'commentstore-join',
                                ],
                        ],
                ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage OLD, opts text' => [
+               yield 'wgContentHandlerUseDB false, opts text' => [
                        [
                                'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_OLD,
                        ],
                        [ 'text' ],
                        [
-                               'tables' => [ 'revision', 'text' ],
+                               'tables' => [ 'revision', 'commentstore-table', 
'text' ],
                                'fields' => [
                                        'rev_id',
                                        'rev_page',
@@ -1359,9 +1252,7 @@
                                        'rev_len',
                                        'rev_parent_id',
                                        'rev_sha1',
-                                       'rev_comment_text' => 'rev_comment',
-                                       'rev_comment_data' => 'NULL',
-                                       'rev_comment_cid' => 'NULL',
+                                       'commentstore-field',
                                        'old_text',
                                        'old_flags',
                                ],
@@ -1370,17 +1261,17 @@
                                                'INNER JOIN',
                                                [ 'rev_text_id=old_id' ],
                                        ],
+                                       'commentstore-join',
                                ],
                        ],
                ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage OLD, opts 3' => [
+               yield 'wgContentHandlerUseDB false, opts 3' => [
                        [
                                'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_OLD,
                        ],
                        [ 'text', 'page', 'user' ],
                        [
-                               'tables' => [ 'revision', 'page', 'user', 
'text' ],
+                               'tables' => [ 'revision', 'commentstore-table', 
'page', 'user', 'text' ],
                                'fields' => [
                                        'rev_id',
                                        'rev_page',
@@ -1393,9 +1284,7 @@
                                        'rev_len',
                                        'rev_parent_id',
                                        'rev_sha1',
-                                       'rev_comment_text' => 'rev_comment',
-                                       'rev_comment_data' => 'NULL',
-                                       'rev_comment_cid' => 'NULL',
+                                       'commentstore-field',
                                        'page_namespace',
                                        'page_title',
                                        'page_id',
@@ -1422,17 +1311,17 @@
                                                'INNER JOIN',
                                                [ 'rev_text_id=old_id' ],
                                        ],
+                                       'commentstore-join',
                                ],
                        ],
                ];
-               yield 'wgContentHandlerUseDB true, 
wgCommentTableSchemaMigrationStage OLD, opts none' => [
+               yield 'wgContentHandlerUseDB true, opts none' => [
                        [
                                'wgContentHandlerUseDB' => true,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_OLD,
                        ],
                        [],
                        [
-                               'tables' => [ 'revision' ],
+                               'tables' => [ 'revision', 'commentstore-table' 
],
                                'fields' => [
                                        'rev_id',
                                        'rev_page',
@@ -1445,133 +1334,11 @@
                                        'rev_len',
                                        'rev_parent_id',
                                        'rev_sha1',
-                                       'rev_comment_text' => 'rev_comment',
-                                       'rev_comment_data' => 'NULL',
-                                       'rev_comment_cid' => 'NULL',
+                                       'commentstore-field',
                                        'rev_content_format',
                                        'rev_content_model',
                                ],
-                               'joins' => [],
-                       ],
-               ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage WRITE_BOTH, opts none' => [
-                       [
-                               'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_WRITE_BOTH,
-                       ],
-                       [],
-                       [
-                               'tables' => [
-                                       'revision',
-                                       'temp_rev_comment' => 
'revision_comment_temp',
-                                       'comment_rev_comment' => 'comment',
-                               ],
-                               'fields' => [
-                                       'rev_id',
-                                       'rev_page',
-                                       'rev_text_id',
-                                       'rev_timestamp',
-                                       'rev_user_text',
-                                       'rev_user',
-                                       'rev_minor_edit',
-                                       'rev_deleted',
-                                       'rev_len',
-                                       'rev_parent_id',
-                                       'rev_sha1',
-                                       'rev_comment_text' => 'COALESCE( 
comment_rev_comment.comment_text, rev_comment )',
-                                       'rev_comment_data' => 
'comment_rev_comment.comment_data',
-                                       'rev_comment_cid' => 
'comment_rev_comment.comment_id',
-                               ],
-                               'joins' => [
-                                       'temp_rev_comment' => [
-                                               'LEFT JOIN',
-                                               
'temp_rev_comment.revcomment_rev = rev_id',
-                                       ],
-                                       'comment_rev_comment' => [
-                                               'LEFT JOIN',
-                                               'comment_rev_comment.comment_id 
= temp_rev_comment.revcomment_comment_id',
-                                       ],
-                               ],
-                       ],
-               ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage WRITE_NEW, opts none' => [
-                       [
-                               'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_WRITE_NEW,
-                       ],
-                       [],
-                       [
-                               'tables' => [
-                                       'revision',
-                                       'temp_rev_comment' => 
'revision_comment_temp',
-                                       'comment_rev_comment' => 'comment',
-                               ],
-                               'fields' => [
-                                       'rev_id',
-                                       'rev_page',
-                                       'rev_text_id',
-                                       'rev_timestamp',
-                                       'rev_user_text',
-                                       'rev_user',
-                                       'rev_minor_edit',
-                                       'rev_deleted',
-                                       'rev_len',
-                                       'rev_parent_id',
-                                       'rev_sha1',
-                                       'rev_comment_text' => 'COALESCE( 
comment_rev_comment.comment_text, rev_comment )',
-                                       'rev_comment_data' => 
'comment_rev_comment.comment_data',
-                                       'rev_comment_cid' => 
'comment_rev_comment.comment_id',
-                               ],
-                               'joins' => [
-                                       'temp_rev_comment' => [
-                                               'LEFT JOIN',
-                                               
'temp_rev_comment.revcomment_rev = rev_id',
-                                       ],
-                                       'comment_rev_comment' => [
-                                               'LEFT JOIN',
-                                               'comment_rev_comment.comment_id 
= temp_rev_comment.revcomment_comment_id',
-                                       ],
-                               ],
-                       ],
-               ];
-               yield 'wgContentHandlerUseDB false, 
wgCommentTableSchemaMigrationStage NEW, opts none' => [
-                       [
-                               'wgContentHandlerUseDB' => false,
-                               'wgCommentTableSchemaMigrationStage' => 
MIGRATION_NEW,
-                       ],
-                       [],
-                       [
-                               'tables' => [
-                                       'revision',
-                                       'temp_rev_comment' => 
'revision_comment_temp',
-                                       'comment_rev_comment' => 'comment',
-                               ],
-                               'fields' => [
-                                       'rev_id',
-                                       'rev_page',
-                                       'rev_text_id',
-                                       'rev_timestamp',
-                                       'rev_user_text',
-                                       'rev_user',
-                                       'rev_minor_edit',
-                                       'rev_deleted',
-                                       'rev_len',
-                                       'rev_parent_id',
-                                       'rev_sha1',
-                                       'rev_comment_text' => 
'comment_rev_comment.comment_text',
-                                       'rev_comment_data' => 
'comment_rev_comment.comment_data',
-                                       'rev_comment_cid' => 
'comment_rev_comment.comment_id',
-                               ],
-                               'joins' => [
-                                       'temp_rev_comment' => [
-                                               'JOIN',
-                                               
'temp_rev_comment.revcomment_rev = rev_id',
-                                       ],
-                                       'comment_rev_comment' => [
-                                               'JOIN',
-                                               'comment_rev_comment.comment_id 
= temp_rev_comment.revcomment_comment_id',
-                                       ],
-                               ],
+                               'joins' => [ 'commentstore-join' ],
                        ],
                ];
        }
@@ -1582,6 +1349,7 @@
         */
        public function testGetQueryInfo( $globals, $options, $expected ) {
                $this->setMwGlobals( $globals );
+               $this->overrideCommentStoreFactory();
 
                $revisionStore = $this->getRevisionStore();
                $revisionStore->setContentHandlerUseDB( 
$globals['wgContentHandlerUseDB'] );

-- 
To view, visit https://gerrit.wikimedia.org/r/406142
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I16b00a5514547d93a2308393098e3b363505374e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Addshore <addshorew...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to