From: Aleksey Bekh-Ivanov (WMDE) Date: Tue, 26 Sep 2017 12:01:30 +0000 (+0200) Subject: Fix inability of fetching message object X-Git-Tag: 1.31.0-rc.0~1866^2 X-Git-Url: http://git.cyclocoop.org/%27%2C%20%20%20quote_amp%28%24url%29%2C%20%20%20%27?a=commitdiff_plain;h=42f822a949ea549751f4de810fd76bc9f4f5db01;p=lhc%2Fweb%2Fwiklou.git Fix inability of fetching message object Fatal error was happening due to the fact that ApiUsageException was trying to call `getMessage()` on StatusValue which doesn't have this method. Change-Id: Idd9c7d47d9e24a6a32db6daf75a827bf958c9b76 --- diff --git a/includes/api/ApiUsageException.php b/includes/api/ApiUsageException.php index 47902a75b0..4196add2c3 100644 --- a/includes/api/ApiUsageException.php +++ b/includes/api/ApiUsageException.php @@ -213,7 +213,7 @@ class ApiUsageException extends UsageException implements ILocalizedException { * @inheritDoc */ public function getMessageObject() { - return $this->status->getMessage(); + return Status::wrap( $this->status )->getMessage(); } /** diff --git a/tests/phpunit/includes/api/ApiUsageExceptionTest.php b/tests/phpunit/includes/api/ApiUsageExceptionTest.php new file mode 100644 index 0000000000..f901cf2d1c --- /dev/null +++ b/tests/phpunit/includes/api/ApiUsageExceptionTest.php @@ -0,0 +1,41 @@ +fatal( $messageKey, $messageParameter ); + + $apiUsageException = new ApiUsageException( null, $statusValue ); + /** @var \Message $gotMessage */ + $gotMessage = $apiUsageException->getMessageObject(); + + $this->assertInstanceOf( \Message::class, $gotMessage ); + $this->assertEquals( $messageKey, $gotMessage->getKey() ); + $this->assertEquals( [ $messageParameter ], $gotMessage->getParams() ); + } + + public function testNewWithMessage_ThenGetMessageObject_ReturnsApiMessageWithProvidedData() { + $expectedMessage = new Message( 'some-message-key', [ 'some message parameter' ] ); + $expectedCode = 'some-error-code'; + $expectedData = [ 'some-error-data' ]; + + $apiUsageException = ApiUsageException::newWithMessage( + null, + $expectedMessage, + $expectedCode, + $expectedData + ); + /** @var \ApiMessage $gotMessage */ + $gotMessage = $apiUsageException->getMessageObject(); + + $this->assertInstanceOf( \ApiMessage::class, $gotMessage ); + $this->assertEquals( $expectedMessage->getKey(), $gotMessage->getKey() ); + $this->assertEquals( $expectedMessage->getParams(), $gotMessage->getParams() ); + $this->assertEquals( $expectedCode, $gotMessage->getApiCode() ); + $this->assertEquals( $expectedData, $gotMessage->getApiData() ); + } + +}