Revision: test and fix __construct exceptions
[lhc/web/wiklou.git] / tests / phpunit / includes / RevisionTest.php
index 80a690f..39f7e5c 100644 (file)
@@ -66,11 +66,7 @@ class RevisionTest extends MediaWikiTestCase {
                ];
                yield 'with content' => [
                        [
-                               'content' => ContentHandler::makeContent(
-                                       'hello world.',
-                                       Title::newFromText( 'RevisionTest_testConstructWithContent' ),
-                                       CONTENT_MODEL_JAVASCRIPT
-                               ),
+                               'content' => new JavaScriptContent( 'hellow world.' )
                        ],
                ];
        }
@@ -85,6 +81,41 @@ class RevisionTest extends MediaWikiTestCase {
                $this->assertEquals( CONTENT_MODEL_JAVASCRIPT, $rev->getContentModel() );
        }
 
+       public function provideConstructThrowsExceptions() {
+               yield 'content and text_id both not empty' => [
+                       [
+                               'content' => new WikitextContent( 'GOAT' ),
+                               'text_id' => 'someid',
+                               ],
+                       new MWException( "Text already stored in external store (id someid), " .
+                               "can't serialize content object" )
+               ];
+               yield 'with bad content object (class)' => [
+                       [ 'content' => new stdClass() ],
+                       new MWException( '`content` field must contain a Content object.' )
+               ];
+               yield 'with bad content object (string)' => [
+                       [ 'content' => 'ImAGoat' ],
+                       new MWException( '`content` field must contain a Content object.' )
+               ];
+               yield 'bad row format' => [
+                       'imastring, not a row',
+                       new MWException( 'Revision constructor passed invalid row format.' )
+               ];
+       }
+
+       /**
+        * @dataProvider provideConstructThrowsExceptions
+        */
+       public function testConstructThrowsExceptions( $rowArray, Exception $expectedException ) {
+               $this->setExpectedException(
+                       get_class( $expectedException ),
+                       $expectedException->getMessage(),
+                       $expectedException->getCode()
+               );
+               new Revision( $rowArray );
+       }
+
        public function provideGetRevisionText() {
                yield 'Generic test' => [
                        'This is a goat of revision text.',