| Current File : /home/jvzmxxx/wiki/extensions/Wikibase/lib/tests/phpunit/Formatters/MessageSnakFormatterTest.php |
<?php
namespace Wikibase\Lib\Test;
use DataValues\StringValue;
use Message;
use Wikibase\DataModel\Entity\PropertyId;
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
use Wikibase\DataModel\Snak\PropertyValueSnak;
use Wikibase\DataModel\Snak\Snak;
use Wikibase\Lib\MessageSnakFormatter;
use Wikibase\Lib\SnakFormatter;
/**
* @covers Wikibase\Lib\MessageSnakFormatter
* @uses Wikibase\DataModel\Entity\PropertyId
* @uses Wikibase\DataModel\Snak\PropertyNoValueSnak
* @uses Wikibase\DataModel\Snak\PropertySomeValueSnak
*
* @group ValueFormatters
* @group DataValueExtensions
* @group WikibaseLib
* @group Wikibase
*
* @license GPL-2.0+
* @author Daniel Kinzler
* @author Thiemo Mättig
*/
class MessageSnakFormatterTest extends \MediaWikiTestCase {
/**
* @param string $snakType
* @param string $format
*
* @return MessageSnakFormatter
*/
private function getFormatter( $snakType, $format ) {
$message = $this->getMockBuilder( Message::class )
->setConstructorArgs( array( 'message' ) )
->getMock();
foreach ( array( 'parse', 'text', 'plain' ) as $method ) {
$message->expects( $this->any() )
->method( $method )
->will( $this->returnValue( $method ) );
}
return new MessageSnakFormatter( $snakType, $message, $format );
}
public function testGetFormat() {
$formatter = $this->getFormatter( 'any', 'test' );
$this->assertEquals( 'test', $formatter->getFormat() );
}
/**
* @dataProvider snakProvider
*/
public function testFormatSnak_givenDifferentSnakTypes( Snak $snak, $expected ) {
$formatter = $this->getFormatter( $snak->getType(), SnakFormatter::FORMAT_HTML );
$this->assertEquals( $expected, $formatter->formatSnak( $snak ) );
}
public function snakProvider() {
$id = new PropertyId( 'P1' );
return array(
array(
new PropertyValueSnak( $id, new StringValue( 'string' ) ),
'parse'
),
array(
new PropertySomeValueSnak( $id ),
'<span class="wikibase-snakview-variation-somevaluesnak">parse</span>'
),
array(
new PropertyNoValueSnak( $id ),
'<span class="wikibase-snakview-variation-novaluesnak">parse</span>'
),
);
}
/**
* @dataProvider formatProvider
*/
public function testFormatSnak_givenDifferentFormats( $format, $expected ) {
$snak = new PropertyValueSnak( new PropertyId( 'P1' ), new StringValue( 'string' ) );
$formatter = $this->getFormatter( $snak->getType(), $format );
$this->assertEquals( $expected, $formatter->formatSnak( $snak ) );
}
public function formatProvider() {
return array(
array( SnakFormatter::FORMAT_PLAIN, 'plain' ),
array( SnakFormatter::FORMAT_WIKI, 'text' ),
array( SnakFormatter::FORMAT_HTML, 'parse' ),
array( SnakFormatter::FORMAT_HTML_WIDGET, 'parse' ),
array( SnakFormatter::FORMAT_HTML_DIFF, 'parse' ),
);
}
}