aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/includes/api/ApiUsageExceptionTest.php
blob: 39e89e1f65da71f6aae7027d78efee78d4644de6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php

namespace MediaWiki\Tests\Api;

use MediaWiki\Api\ApiMessage;
use MediaWiki\Api\ApiUsageException;
use MediaWiki\Message\Message;
use MediaWikiIntegrationTestCase;
use StatusValue;

/**
 * @covers \MediaWiki\Api\ApiUsageException
 */
class ApiUsageExceptionTest extends MediaWikiIntegrationTestCase {

	public function testCreateWithStatusValue_CanGetAMessageObject() {
		$messageKey = 'some-message-key';
		$messageParameter = 'some-parameter';
		$statusValue = new StatusValue();
		$statusValue->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() );
	}

}