8764b4194f5b3e311a3d4f4f25ecc6a9967259e6
[lhc/web/wiklou.git] / tests / phpunit / includes / api / ApiMessageTest.php
1 <?php
2
3 /**
4 * @group API
5 */
6 class ApiMessageTest extends MediaWikiTestCase {
7
8 private function compareMessages( Message $msg, Message $msg2 ) {
9 $this->assertSame( $msg->getKey(), $msg2->getKey(), 'getKey' );
10 $this->assertSame( $msg->getKeysToTry(), $msg2->getKeysToTry(), 'getKeysToTry' );
11 $this->assertSame( $msg->getParams(), $msg2->getParams(), 'getParams' );
12 $this->assertSame( $msg->getLanguage(), $msg2->getLanguage(), 'getLanguage' );
13
14 $msg = TestingAccessWrapper::newFromObject( $msg );
15 $msg2 = TestingAccessWrapper::newFromObject( $msg2 );
16 $this->assertSame( $msg->interface, $msg2->interface, 'interface' );
17 $this->assertSame( $msg->useDatabase, $msg2->useDatabase, 'useDatabase' );
18 $this->assertSame( $msg->format, $msg2->format, 'format' );
19 $this->assertSame(
20 $msg->title ? $msg->title->getFullText() : null,
21 $msg2->title ? $msg2->title->getFullText() : null,
22 'title'
23 );
24 }
25
26 /**
27 * @covers ApiMessage
28 * @covers ApiMessageTrait
29 */
30 public function testApiMessage() {
31 $msg = new Message( [ 'foo', 'bar' ], [ 'baz' ] );
32 $msg->inLanguage( 'de' )->title( Title::newMainPage() );
33 $msg2 = new ApiMessage( $msg, 'code', [ 'data' ] );
34 $this->compareMessages( $msg, $msg2 );
35 $this->assertEquals( 'code', $msg2->getApiCode() );
36 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
37
38 $msg2 = unserialize( serialize( $msg2 ) );
39 $this->compareMessages( $msg, $msg2 );
40 $this->assertEquals( 'code', $msg2->getApiCode() );
41 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
42
43 $msg = new Message( [ 'foo', 'bar' ], [ 'baz' ] );
44 $msg2 = new ApiMessage( [ [ 'foo', 'bar' ], 'baz' ], 'code', [ 'data' ] );
45 $this->compareMessages( $msg, $msg2 );
46 $this->assertEquals( 'code', $msg2->getApiCode() );
47 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
48
49 $msg = new Message( 'foo' );
50 $msg2 = new ApiMessage( 'foo' );
51 $this->compareMessages( $msg, $msg2 );
52 $this->assertEquals( 'foo', $msg2->getApiCode() );
53 $this->assertEquals( [], $msg2->getApiData() );
54
55 $msg2->setApiCode( 'code', [ 'data' ] );
56 $this->assertEquals( 'code', $msg2->getApiCode() );
57 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
58 $msg2->setApiCode( null );
59 $this->assertEquals( 'foo', $msg2->getApiCode() );
60 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
61 $msg2->setApiData( [ 'data2' ] );
62 $this->assertEquals( [ 'data2' ], $msg2->getApiData() );
63 }
64
65 /**
66 * @covers ApiRawMessage
67 * @covers ApiMessageTrait
68 */
69 public function testApiRawMessage() {
70 $msg = new RawMessage( 'foo', [ 'baz' ] );
71 $msg->inLanguage( 'de' )->title( Title::newMainPage() );
72 $msg2 = new ApiRawMessage( $msg, 'code', [ 'data' ] );
73 $this->compareMessages( $msg, $msg2 );
74 $this->assertEquals( 'code', $msg2->getApiCode() );
75 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
76
77 $msg2 = unserialize( serialize( $msg2 ) );
78 $this->compareMessages( $msg, $msg2 );
79 $this->assertEquals( 'code', $msg2->getApiCode() );
80 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
81
82 $msg = new RawMessage( 'foo', [ 'baz' ] );
83 $msg2 = new ApiRawMessage( [ 'foo', 'baz' ], 'code', [ 'data' ] );
84 $this->compareMessages( $msg, $msg2 );
85 $this->assertEquals( 'code', $msg2->getApiCode() );
86 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
87
88 $msg = new RawMessage( 'foo' );
89 $msg2 = new ApiRawMessage( 'foo', 'code', [ 'data' ] );
90 $this->compareMessages( $msg, $msg2 );
91 $this->assertEquals( 'code', $msg2->getApiCode() );
92 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
93
94 $msg2->setApiCode( 'code', [ 'data' ] );
95 $this->assertEquals( 'code', $msg2->getApiCode() );
96 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
97 $msg2->setApiCode( null );
98 $this->assertEquals( 'foo', $msg2->getApiCode() );
99 $this->assertEquals( [ 'data' ], $msg2->getApiData() );
100 $msg2->setApiData( [ 'data2' ] );
101 $this->assertEquals( [ 'data2' ], $msg2->getApiData() );
102 }
103
104 /**
105 * @covers ApiMessage::create
106 */
107 public function testApiMessageCreate() {
108 $this->assertInstanceOf( 'ApiMessage', ApiMessage::create( new Message( 'mainpage' ) ) );
109 $this->assertInstanceOf( 'ApiRawMessage', ApiMessage::create( new RawMessage( 'mainpage' ) ) );
110 $this->assertInstanceOf( 'ApiMessage', ApiMessage::create( 'mainpage' ) );
111
112 $msg = new ApiMessage( 'mainpage' );
113 $this->assertSame( $msg, ApiMessage::create( $msg ) );
114
115 $msg = new ApiRawMessage( 'mainpage' );
116 $this->assertSame( $msg, ApiMessage::create( $msg ) );
117 }
118
119 }