Add tablesUsed to RevisionStoreDbTest
[lhc/web/wiklou.git] / tests / phpunit / includes / Storage / RevisionStoreTest.php
index 2cdd316..c9e9978 100644 (file)
@@ -2,10 +2,13 @@
 
 namespace MediaWiki\Tests\Storage;
 
+use HashBagOStuff;
+use Language;
 use MediaWiki\Storage\RevisionAccessException;
 use MediaWiki\Storage\RevisionStore;
 use MediaWiki\Storage\SqlBlobStore;
 use MediaWikiTestCase;
+use Title;
 use WANObjectCache;
 use Wikimedia\Rdbms\Database;
 use Wikimedia\Rdbms\LoadBalancer;
@@ -421,6 +424,107 @@ class RevisionStoreTest extends MediaWikiTestCase {
                $store->getTitle( 1, 2, RevisionStore::READ_NORMAL );
        }
 
-       // FIXME: test getRevisionSizes
+       public function provideNewRevisionFromRow_legacyEncoding_applied() {
+               yield 'windows-1252, old_flags is empty' => [
+                       'windows-1252',
+                       'en',
+                       [
+                               'old_flags' => '',
+                               'old_text' => "S\xF6me Content",
+                       ],
+                       'Söme Content'
+               ];
+
+               yield 'windows-1252, old_flags is null' => [
+                       'windows-1252',
+                       'en',
+                       [
+                               'old_flags' => null,
+                               'old_text' => "S\xF6me Content",
+                       ],
+                       'Söme Content'
+               ];
+       }
+
+       /**
+        * @dataProvider provideNewRevisionFromRow_legacyEncoding_applied
+        *
+        * @covers \MediaWiki\Storage\RevisionStore::newRevisionFromRow
+        * @covers \MediaWiki\Storage\RevisionStore::newRevisionFromRow_1_29
+        */
+       public function testNewRevisionFromRow_legacyEncoding_applied( $encoding, $locale, $row, $text ) {
+               $cache = new WANObjectCache( [ 'cache' => new HashBagOStuff() ] );
+
+               $blobStore = new SqlBlobStore( wfGetLB(), $cache );
+               $blobStore->setLegacyEncoding( $encoding, Language::factory( $locale ) );
+
+               $store = new RevisionStore( wfGetLB(), $blobStore, $cache );
+
+               $record = $store->newRevisionFromRow(
+                       $this->makeRow( $row ),
+                       0,
+                       Title::newFromText( __METHOD__ . '-UTPage' )
+               );
+
+               $this->assertSame( $text, $record->getContent( 'main' )->serialize() );
+       }
+
+       /**
+        * @covers \MediaWiki\Storage\RevisionStore::newRevisionFromRow
+        * @covers \MediaWiki\Storage\RevisionStore::newRevisionFromRow_1_29
+        */
+       public function testNewRevisionFromRow_legacyEncoding_ignored() {
+               $row = [
+                       'old_flags' => 'utf-8',
+                       'old_text' => 'Söme Content',
+               ];
+
+               $cache = new WANObjectCache( [ 'cache' => new HashBagOStuff() ] );
+
+               $blobStore = new SqlBlobStore( wfGetLB(), $cache );
+               $blobStore->setLegacyEncoding( 'windows-1252', Language::factory( 'en' ) );
+
+               $store = new RevisionStore( wfGetLB(), $blobStore, $cache );
+
+               $record = $store->newRevisionFromRow(
+                       $this->makeRow( $row ),
+                       0,
+                       Title::newFromText( __METHOD__ . '-UTPage' )
+               );
+               $this->assertSame( 'Söme Content', $record->getContent( 'main' )->serialize() );
+       }
+
+       private function makeRow( array $array ) {
+               $row = $array + [
+                               'rev_id' => 7,
+                               'rev_page' => 5,
+                               'rev_text_id' => 11,
+                               'rev_timestamp' => '20110101000000',
+                               'rev_user_text' => 'Tester',
+                               'rev_user' => 17,
+                               'rev_minor_edit' => 0,
+                               'rev_deleted' => 0,
+                               'rev_len' => 100,
+                               'rev_parent_id' => 0,
+                               'rev_sha1' => 'deadbeef',
+                               'rev_comment_text' => 'Testing',
+                               'rev_comment_data' => '{}',
+                               'rev_comment_cid' => 111,
+                               'rev_content_format' => CONTENT_FORMAT_TEXT,
+                               'rev_content_model' => CONTENT_MODEL_TEXT,
+                               'page_namespace' => 0,
+                               'page_title' => 'TEST',
+                               'page_id' => 5,
+                               'page_latest' => 7,
+                               'page_is_redirect' => 0,
+                               'page_len' => 100,
+                               'user_name' => 'Tester',
+                               'old_is' => 13,
+                               'old_text' => 'Hello World',
+                               'old_flags' => 'utf-8',
+                       ];
+
+               return (object)$row;
+       }
 
 }