| Current File : /home/jvzmxxx/wiki/extensions/Wikibase/view/tests/phpunit/SnakHtmlGeneratorTest.php |
<?php
namespace Wikibase\View\Tests;
use DataValues\StringValue;
use PHPUnit_Framework_MockObject_Matcher_Invocation;
use PHPUnit_Framework_TestCase;
use Wikibase\DataModel\Services\EntityId\EntityIdFormatter;
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
use Wikibase\DataModel\Snak\PropertySomeValueSnak;
use Wikibase\DataModel\Snak\PropertyValueSnak;
use Wikibase\DataModel\Snak\Snak;
use Wikibase\Lib\SnakFormatter;
use Wikibase\View\DummyLocalizedTextProvider;
use Wikibase\View\SnakHtmlGenerator;
use Wikibase\View\Template\TemplateFactory;
/**
* @covers Wikibase\View\SnakHtmlGenerator
*
* @uses Wikibase\View\Template\Template
* @uses Wikibase\View\Template\TemplateFactory
* @uses Wikibase\View\Template\TemplateRegistry
*
* @group Wikibase
* @group WikibaseView
*
* @license GPL-2.0+
* @author Katie Filbert < aude.wiki@gmail.com >
* @author Thiemo Mättig
*/
class SnakHtmlGeneratorTest extends PHPUnit_Framework_TestCase {
/**
* @param PHPUnit_Framework_MockObject_Matcher_Invocation $formatPropertyIdMatcher
*
* @return SnakHtmlGenerator
*/
private function getSnakHtmlGenerator(
PHPUnit_Framework_MockObject_Matcher_Invocation $formatPropertyIdMatcher
) {
$snakFormatter = $this->getMock( SnakFormatter::class );
$snakFormatter->expects( $this->once() )
->method( 'formatSnak' )
->will( $this->returnValue( '<SNAK>' ) );
$snakFormatter->expects( $this->once() )
->method( 'getFormat' )
->will( $this->returnValue( SnakFormatter::FORMAT_HTML ) );
$propertyIdFormatter = $this->getMock( EntityIdFormatter::class );
$propertyIdFormatter->expects( $formatPropertyIdMatcher )
->method( 'formatEntityId' )
->will( $this->returnValue( '<ID>' ) );
return new SnakHtmlGenerator(
TemplateFactory::getDefaultInstance(),
$snakFormatter,
$propertyIdFormatter,
new DummyLocalizedTextProvider( 'lkt' )
);
}
/**
* @dataProvider getSnakHtmlProvider
*/
public function testGetSnakHtmlWithPropertyLink( Snak $snak, $className ) {
$generator = $this->getSnakHtmlGenerator( $this->once() );
$html = $generator->getSnakHtml( $snak, true );
$this->assertContains( '<ID>', $html );
$this->assertContains( $className, $html, 'snak variation css' );
$this->assertContains( '<SNAK>', $html, 'formatted snak' );
}
/**
* @dataProvider getSnakHtmlProvider
*/
public function testGetSnakHtmlWithoutPropertyLink( Snak $snak, $className ) {
$generator = $this->getSnakHtmlGenerator( $this->never() );
$html = $generator->getSnakHtml( $snak, false );
$this->assertNotContains( '<ID>', $html );
$this->assertContains( $className, $html, 'snak variation css' );
$this->assertContains( '<SNAK>', $html, 'formatted snak' );
}
public function getSnakHtmlProvider() {
return array(
array(
new PropertyNoValueSnak( 1 ),
'wikibase-snakview-variation-novalue',
),
array(
new PropertySomeValueSnak( 2 ),
'wikibase-snakview-variation-somevalue',
),
array(
new PropertyValueSnak( 3, new StringValue( 'chocolate!' ) ),
'wikibase-snakview-variation-value',
)
);
}
}