diff options
author | Tim Starling <tstarling@wikimedia.org> | 2019-07-15 20:24:38 +1000 |
---|---|---|
committer | Tim Starling <tstarling@wikimedia.org> | 2019-08-28 12:28:05 +1000 |
commit | 09cd8eb0807ee7b0a94c674766e2ea201e5d071b (patch) | |
tree | 50cefe6e78377459c32e1fadbc6b56fc1fed0800 /tests/phpunit/includes/libs/Message/MessageValueTest.php | |
parent | 3bb3c8b0ae092b2e667f6f33abfc98f9c205d53c (diff) | |
download | mediawikicore-09cd8eb0807ee7b0a94c674766e2ea201e5d071b.tar.gz mediawikicore-09cd8eb0807ee7b0a94c674766e2ea201e5d071b.zip |
MessageFormatterFactory
An injectable service interface for message formatting, somewhat
narrowed compared to Message.
Only the text format is implemented in this framework so far, with
getTextFormatter() returning a formatter that converts to the text
format. Other formatters could be added to MessageFormatterFactory.
Bug: T226598
Change-Id: Id053074c1dbcb692e8309fdca602f94a385bca0c
Diffstat (limited to 'tests/phpunit/includes/libs/Message/MessageValueTest.php')
-rw-r--r-- | tests/phpunit/includes/libs/Message/MessageValueTest.php | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/tests/phpunit/includes/libs/Message/MessageValueTest.php b/tests/phpunit/includes/libs/Message/MessageValueTest.php new file mode 100644 index 000000000000..04dfa4e7e994 --- /dev/null +++ b/tests/phpunit/includes/libs/Message/MessageValueTest.php @@ -0,0 +1,219 @@ +<?php + +namespace Wikimedia\Tests\Message; + +use Wikimedia\Message\ListType; +use Wikimedia\Message\MessageValue; +use Wikimedia\Message\ParamType; +use Wikimedia\Message\TextParam; +use MediaWikiTestCase; + +/** + * @covers \Wikimedia\Message\MessageValue + * @covers \Wikimedia\Message\ListParam + * @covers \Wikimedia\Message\TextParam + * @covers \Wikimedia\Message\MessageParam + */ +class MessageValueTest extends MediaWikiTestCase { + public static function provideConstruct() { + return [ + [ + [], + '<message key="key"></message>', + ], + [ + [ 'a' ], + '<message key="key"><text>a</text></message>' + ], + [ + [ new TextParam( ParamType::BITRATE, 100 ) ], + '<message key="key"><bitrate>100</bitrate></message>' + ], + ]; + } + + /** @dataProvider provideConstruct */ + public function testConstruct( $input, $expected ) { + $mv = new MessageValue( 'key', $input ); + $this->assertSame( $expected, $mv->dump() ); + } + + public function testGetKey() { + $mv = new MessageValue( 'key' ); + $this->assertSame( 'key', $mv->getKey() ); + } + + public function testParams() { + $mv = new MessageValue( 'key' ); + $mv->params( 1, 'x' ); + $mv2 = $mv->params( new TextParam( ParamType::BITRATE, 100 ) ); + $this->assertSame( + '<message key="key"><text>1</text><text>x</text><bitrate>100</bitrate></message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testTextParamsOfType() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->textParamsOfType( ParamType::BITRATE, 1, 2 ); + $this->assertSame( '<message key="key">' . + '<bitrate>1</bitrate><bitrate>2</bitrate>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testListParamsOfType() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->listParamsOfType( ListType::COMMA, [ 'a' ], [ 'b', 'c' ] ); + $this->assertSame( '<message key="key">' . + '<list listType="comma"><text>a</text></list>' . + '<list listType="comma"><text>b</text><text>c</text></list>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testTextParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->textParams( 'a', 'b' ); + $this->assertSame( '<message key="key">' . + '<text>a</text>' . + '<text>b</text>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testNumParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->numParams( 1, 2 ); + $this->assertSame( '<message key="key">' . + '<num>1</num>' . + '<num>2</num>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testLongDurationParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->longDurationParams( 1, 2 ); + $this->assertSame( '<message key="key">' . + '<duration>1</duration>' . + '<duration>2</duration>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testShortDurationParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->shortDurationParams( 1, 2 ); + $this->assertSame( '<message key="key">' . + '<timeperiod>1</timeperiod>' . + '<timeperiod>2</timeperiod>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testExpiryParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->expiryParams( 1, 2 ); + $this->assertSame( '<message key="key">' . + '<expiry>1</expiry>' . + '<expiry>2</expiry>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testSizeParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->sizeParams( 1, 2 ); + $this->assertSame( '<message key="key">' . + '<size>1</size>' . + '<size>2</size>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testBitrateParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->bitrateParams( 1, 2 ); + $this->assertSame( '<message key="key">' . + '<bitrate>1</bitrate>' . + '<bitrate>2</bitrate>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testRawParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->rawParams( 1, 2 ); + $this->assertSame( '<message key="key">' . + '<raw>1</raw>' . + '<raw>2</raw>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testPlaintextParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->plaintextParams( 1, 2 ); + $this->assertSame( '<message key="key">' . + '<plaintext>1</plaintext>' . + '<plaintext>2</plaintext>' . + '</message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testCommaListParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->commaListParams( [ 'a', 'b' ] ); + $this->assertSame( '<message key="key">' . + '<list listType="comma">' . + '<text>a</text><text>b</text>' . + '</list></message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function tesSemicolonListParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->semicolonListParams( [ 'a', 'b' ] ); + $this->assertSame( '<message key="key">' . + '<list listType="semicolon">' . + '<text>a</text><text>b</text>' . + '</list></message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testPipeListParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->pipeListParams( [ 'a', 'b' ] ); + $this->assertSame( '<message key="key">' . + '<list listType="pipe">' . + '<text>a</text><text>b</text>' . + '</list></message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } + + public function testTextListParams() { + $mv = new MessageValue( 'key' ); + $mv2 = $mv->textListParams( [ 'a', 'b' ] ); + $this->assertSame( '<message key="key">' . + '<list listType="text">' . + '<text>a</text><text>b</text>' . + '</list></message>', + $mv->dump() ); + $this->assertSame( $mv, $mv2 ); + } +} |