Fix use of RawMessage in Status::getMessage()
authorBrad Jorsch <bjorsch@wikimedia.org>
Wed, 2 Mar 2016 17:17:55 +0000 (12:17 -0500)
committerBrad Jorsch <bjorsch@wikimedia.org>
Wed, 2 Mar 2016 17:36:22 +0000 (12:36 -0500)
RawMessage::__construct() takes a single array of params, it's not
varargs-style like wfMessage().

Change-Id: I63950ee16e359aa2627228350e27d9e94bb6e8ce

includes/Status.php
tests/phpunit/includes/StatusTest.php

index 5370239..75fe190 100644 (file)
@@ -265,7 +265,7 @@ class Status {
                        if ( $longContext ) {
                                $s = wfMessage( $longContext, $s );
                        } elseif ( $shortContext ) {
-                               $wrapper = new RawMessage( "\n\$1\n", $s );
+                               $wrapper = new RawMessage( "\n\$1\n", [ $s ] );
                                $wrapper->parse();
                                $s = wfMessage( $shortContext, $wrapper );
                        }
index fffc4f5..6f4395b 100644 (file)
@@ -403,13 +403,29 @@ class StatusTest extends MediaWikiLangTestCase {
        /**
         * @dataProvider provideGetMessage
         * @covers Status::getMessage
-        * @todo test long and short context messages generated through this method
         */
-       public function testGetMessage( Status $status, $expectedParams = [], $expectedKey ) {
+       public function testGetMessage(
+               Status $status, $expectedParams = [], $expectedKey, $expectedWrapper
+       ) {
                $message = $status->getMessage();
                $this->assertInstanceOf( 'Message', $message );
                $this->assertEquals( $expectedParams, $message->getParams(), 'Message::getParams' );
                $this->assertEquals( $expectedKey, $message->getKey(), 'Message::getKey' );
+
+               $message = $status->getMessage( 'wrapper-short', 'wrapper-long' );
+               $this->assertInstanceOf( 'Message', $message );
+               $this->assertEquals( $expectedWrapper, $message->getKey(), 'Message::getKey with wrappers' );
+               $this->assertCount( 1, $message->getParams(), 'Message::getParams with wrappers' );
+
+               $message = $status->getMessage( 'wrapper' );
+               $this->assertInstanceOf( 'Message', $message );
+               $this->assertEquals( 'wrapper', $message->getKey(), 'Message::getKey with wrappers' );
+               $this->assertCount( 1, $message->getParams(), 'Message::getParams with wrappers' );
+
+               $message = $status->getMessage( false, 'wrapper' );
+               $this->assertInstanceOf( 'Message', $message );
+               $this->assertEquals( 'wrapper', $message->getKey(), 'Message::getKey with wrappers' );
+               $this->assertCount( 1, $message->getParams(), 'Message::getParams with wrappers' );
        }
 
        /**
@@ -424,7 +440,8 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases['GoodStatus'] = [
                        new Status(),
                        [ "Status::getMessage called for a good result, this is incorrect\n" ],
-                       'internalerror_info'
+                       'internalerror_info',
+                       'wrapper-short'
                ];
 
                $status = new Status();
@@ -432,7 +449,8 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases['GoodButNoError'] = [
                        $status,
                        [ "Status::getMessage: Invalid result object: no error text but not OK\n" ],
-                       'internalerror_info'
+                       'internalerror_info',
+                       'wrapper-short'
                ];
 
                $status = new Status();
@@ -440,7 +458,8 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases['1StringWarning'] = [
                        $status,
                        [],
-                       'fooBar!'
+                       'fooBar!',
+                       'wrapper-short'
                ];
 
                // FIXME: Assertion tries to compare a StubUserLang with a Language object, because
@@ -454,7 +473,8 @@ class StatusTest extends MediaWikiLangTestCase {
 //             $testCases[ '2StringWarnings' ] = array(
 //                     $status,
 //                     array( new Message( 'fooBar!' ), new Message( 'fooBar2!' ) ),
-//                     "* \$1\n* \$2"
+//                     "* \$1\n* \$2",
+//                     'wrapper-long'
 //             );
 
                $status = new Status();
@@ -462,7 +482,8 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases['1MessageWarning'] = [
                        $status,
                        [ 'foo', 'bar' ],
-                       'fooBar!'
+                       'fooBar!',
+                       'wrapper-short'
                ];
 
                $status = new Status();
@@ -471,7 +492,8 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases['2MessageWarnings'] = [
                        $status,
                        [ new Message( 'fooBar!', [ 'foo', 'bar' ] ), new Message( 'fooBar2!' ) ],
-                       "* \$1\n* \$2"
+                       "* \$1\n* \$2",
+                       'wrapper-long'
                ];
 
                return $testCases;