Merge "Make sure that SQLite uses no prefix"
[lhc/web/wiklou.git] / tests / phpunit / includes / RevisionStorageTest.php
index 4786e3d..4fa42f3 100644 (file)
@@ -41,6 +41,8 @@ class RevisionStorageTest extends MediaWikiTestCase {
        public function setUp() {
                global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers, $wgContLang;
 
+               parent::setUp();
+
                $wgExtraNamespaces[ 12312 ] = 'Dummy';
                $wgExtraNamespaces[ 12313 ] = 'Dummy_talk';
 
@@ -49,15 +51,16 @@ class RevisionStorageTest extends MediaWikiTestCase {
 
                MWNamespace::getCanonicalNamespaces( true ); # reset namespace cache
                $wgContLang->resetNamespaces(); # reset namespace cache
-
                if ( !$this->the_page ) {
-                       $this->the_page = $this->createPage( 'RevisionStorageTest_the_page', "just a dummy page" );
+                       $this->the_page = $this->createPage( 'RevisionStorageTest_the_page', "just a dummy page", CONTENT_MODEL_WIKITEXT );
                }
        }
 
        public function tearDown() {
                global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers, $wgContLang;
 
+               parent::tearDown();
+
                unset( $wgExtraNamespaces[ 12312 ] );
                unset( $wgExtraNamespaces[ 12313 ] );
 
@@ -84,8 +87,20 @@ class RevisionStorageTest extends MediaWikiTestCase {
        }
 
        protected function createPage( $page, $text, $model = null ) {
-               if ( is_string( $page ) ) $page = Title::newFromText( $page );
-               if ( $page instanceof Title ) $page = new WikiPage( $page );
+               if ( is_string( $page ) ) {
+                       if ( !preg_match( '/:/', $page ) &&
+                               ( $model === null || $model === CONTENT_MODEL_WIKITEXT ) ) {
+
+                               $ns = $this->getDefaultWikitextNS();
+                               $page = MWNamespace::getCanonicalName( $ns ) . ':' . $page;
+                       }
+
+                       $page = Title::newFromText( $page );
+               }
+
+               if ( $page instanceof Title ) {
+                       $page = new WikiPage( $page );
+               }
 
                if ( $page->exists() ) {
                        $page->doDeleteArticle( "done" );
@@ -153,7 +168,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
         */
        public function testNewFromArchiveRow()
        {
-               $page = $this->createPage( 'RevisionStorageTest_testNewFromArchiveRow', 'Lorem Ipsum' );
+               $page = $this->createPage( 'RevisionStorageTest_testNewFromArchiveRow', 'Lorem Ipsum', CONTENT_MODEL_WIKITEXT );
                $orig = $page->getRevision();
                $page->doDeleteArticle( 'test Revision::newFromArchiveRow' );
 
@@ -186,7 +201,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
         */
        public function testFetchRevision()
        {
-               $page = $this->createPage( 'RevisionStorageTest_testFetchRevision', 'one' );
+               $page = $this->createPage( 'RevisionStorageTest_testFetchRevision', 'one', CONTENT_MODEL_WIKITEXT );
                $id1 = $page->getRevision()->getId();
 
                $page->doEditContent( new WikitextContent( 'two' ), 'second rev' );
@@ -224,8 +239,6 @@ class RevisionStorageTest extends MediaWikiTestCase {
                                                                'missing rev_content_model in list of fields');
                        $this->assertTrue( in_array( 'rev_content_format', $fields ),
                                                                'missing rev_content_format in list of fields');
-               } else {
-                       $this->markTestSkipped( '$wgContentHandlerUseDB is disabled' );
                }
        }
 
@@ -255,6 +268,25 @@ class RevisionStorageTest extends MediaWikiTestCase {
                $this->assertEquals( 'hello hello.', $rev->getText() );
        }
 
+       /**
+        * @covers Revision::getContent
+        */
+       public function testGetContent_failure()
+       {
+               $rev = new Revision( array(
+                       'page'       =>  $this->the_page->getId(),
+                       'content_model' => $this->the_page->getContentModel(),
+                       'text_id' => 123456789, // not in the test DB
+               ) );
+
+               $this->assertNull( $rev->getContent(),
+                       "getContent() should return null if the revision's text blob could not be loaded." );
+
+               //NOTE: check this twice, once for lazy initialization, and once with the cached value.
+               $this->assertNull( $rev->getContent(),
+                       "getContent() should return null if the revision's text blob could not be loaded." );
+       }
+
        /**
         * @covers Revision::getContent
         */
@@ -333,7 +365,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
         */
        public function testIsCurrent()
        {
-               $page = $this->createPage( 'RevisionStorageTest_testIsCurrent', 'Lorem Ipsum' );
+               $page = $this->createPage( 'RevisionStorageTest_testIsCurrent', 'Lorem Ipsum', CONTENT_MODEL_WIKITEXT );
                $rev1 = $page->getRevision();
 
                # @todo: find out if this should be true
@@ -342,7 +374,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                $rev1x = Revision::newFromId( $rev1->getId() );
                $this->assertTrue( $rev1x->isCurrent() );
 
-               $page->doEditContent( ContentHandler::makeContent( 'Bla bla', $page->getTitle() ), 'second rev' );
+               $page->doEditContent( ContentHandler::makeContent( 'Bla bla', $page->getTitle(), CONTENT_MODEL_WIKITEXT ), 'second rev' );
                $rev2 = $page->getRevision();
 
                # @todo: find out if this should be true
@@ -360,12 +392,12 @@ class RevisionStorageTest extends MediaWikiTestCase {
         */
        public function testGetPrevious()
        {
-               $page = $this->createPage( 'RevisionStorageTest_testGetPrevious', 'Lorem Ipsum testGetPrevious' );
+               $page = $this->createPage( 'RevisionStorageTest_testGetPrevious', 'Lorem Ipsum testGetPrevious', CONTENT_MODEL_WIKITEXT );
                $rev1 = $page->getRevision();
 
                $this->assertNull( $rev1->getPrevious() );
 
-               $page->doEditContent( ContentHandler::makeContent( 'Bla bla', $page->getTitle() ),
+               $page->doEditContent( ContentHandler::makeContent( 'Bla bla', $page->getTitle(), CONTENT_MODEL_WIKITEXT ),
                                                                'second rev testGetPrevious' );
                $rev2 = $page->getRevision();
 
@@ -378,12 +410,12 @@ class RevisionStorageTest extends MediaWikiTestCase {
         */
        public function testGetNext()
        {
-               $page = $this->createPage( 'RevisionStorageTest_testGetNext', 'Lorem Ipsum testGetNext' );
+               $page = $this->createPage( 'RevisionStorageTest_testGetNext', 'Lorem Ipsum testGetNext', CONTENT_MODEL_WIKITEXT );
                $rev1 = $page->getRevision();
 
                $this->assertNull( $rev1->getNext() );
 
-               $page->doEditContent( ContentHandler::makeContent( 'Bla bla', $page->getTitle() ),
+               $page->doEditContent( ContentHandler::makeContent( 'Bla bla', $page->getTitle(), CONTENT_MODEL_WIKITEXT ),
                                                                'second rev testGetNext' );
                $rev2 = $page->getRevision();
 
@@ -396,7 +428,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
         */
        public function testNewNullRevision()
        {
-               $page = $this->createPage( 'RevisionStorageTest_testNewNullRevision', 'some testing text' );
+               $page = $this->createPage( 'RevisionStorageTest_testNewNullRevision', 'some testing text', CONTENT_MODEL_WIKITEXT );
                $orig = $page->getRevision();
 
                $dbw = wfGetDB( DB_MASTER );
@@ -409,7 +441,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                $this->assertEquals( 'some testing text', $rev->getContent()->getNativeData() );
        }
 
-       public function dataUserWasLastToEdit() {
+       public static function provideUserWasLastToEdit() {
                return array(
                        array( #0
                                3, true, # actually the last edit
@@ -427,7 +459,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
        }
 
        /**
-        * @dataProvider dataUserWasLastToEdit
+        * @dataProvider provideUserWasLastToEdit
         */
        public function testUserWasLastToEdit( $sinceIdx, $expectedLast ) {
                $userA = \User::newFromName( "RevisionStorageTest_userA" );
@@ -441,11 +473,14 @@ class RevisionStorageTest extends MediaWikiTestCase {
                        $userB = \User::createNew( $userB->getName() );
                }
 
+               $ns = $this->getDefaultWikitextNS();
+
                $dbw = wfGetDB( DB_MASTER );
                $revisions = array();
 
                // create revisions -----------------------------
-               $page = WikiPage::factory( Title::newFromText( 'RevisionStorageTest_testUserWasLastToEdit' ) );
+               $page = WikiPage::factory( Title::newFromText(
+                       'RevisionStorageTest_testUserWasLastToEdit', $ns ) );
 
                # zero
                $revisions[0] = new Revision( array(
@@ -454,6 +489,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                        'timestamp' => '20120101000000',
                        'user' => $userA->getId(),
                        'text' => 'zero',
+                       'content_model' => CONTENT_MODEL_WIKITEXT,
                        'summary' => 'edit zero'
                ) );
                $revisions[0]->insertOn( $dbw );
@@ -465,6 +501,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                        'timestamp' => '20120101000100',
                        'user' => $userA->getId(),
                        'text' => 'one',
+                       'content_model' => CONTENT_MODEL_WIKITEXT,
                        'summary' => 'edit one'
                ) );
                $revisions[1]->insertOn( $dbw );
@@ -476,6 +513,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                        'timestamp' => '20120101000200',
                        'user' => $userB->getId(),
                        'text' => 'two',
+                       'content_model' => CONTENT_MODEL_WIKITEXT,
                        'summary' => 'edit two'
                ) );
                $revisions[2]->insertOn( $dbw );
@@ -487,6 +525,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                        'timestamp' => '20120101000300',
                        'user' => $userA->getId(),
                        'text' => 'three',
+                       'content_model' => CONTENT_MODEL_WIKITEXT,
                        'summary' => 'edit three'
                ) );
                $revisions[3]->insertOn( $dbw );
@@ -498,6 +537,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                        'timestamp' => '20120101000200',
                        'user' => $userA->getId(),
                        'text' => 'zero',
+                       'content_model' => CONTENT_MODEL_WIKITEXT,
                        'summary' => 'edit four'
                ) );
                $revisions[4]->insertOn( $dbw );