| Current File : /home/jvzmxxx/wiki/extensions/Wikibase/lib/tests/phpunit/Formatters/VocabularyUriFormatterTest.php |
<?php
namespace Wikibase\Lib\Test;
use PHPUnit_Framework_TestCase;
use Wikibase\DataModel\Entity\BasicEntityIdParser;
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Services\Lookup\LabelDescriptionLookup;
use Wikibase\DataModel\Services\Lookup\LabelDescriptionLookupException;
use Wikibase\DataModel\Term\Term;
use Wikibase\Lib\VocabularyUriFormatter;
/**
* @covers Wikibase\Lib\VocabularyUriFormatter
*
* @group Wikibase
* @group WikibaseLIb
*
* @license GPL-2.0+
* @author Daniel Kinzler
* @author Thiemo Mättig
*/
class VocabularyUriFormatterTest extends PHPUnit_Framework_TestCase {
public function unitProvider() {
return array(
'empty unit' => array( '', null ),
'unit is 1' => array( '1', null ),
'unit is "NotAUnit"' => array( 'NotAUnit', null ),
'unit is bad id' => array( 'kittens', 'kittens' ),
'unit has label' => array( 'Q7', 'LABEL:Q7' ),
'unit has no label' => array( 'Q112233', 'Q112233' ),
'unknown int' => array( '2', '2' ),
'unknown URI' => array( 'http://www.wikidata.org/entity/Q200', 'http://www.wikidata.org/entity/Q200' ),
'property id' => array( 'P7', 'LABEL:P7' ),
);
}
/**
* @dataProvider unitProvider
*/
public function testFormat( $unit, $expected ) {
$labelLookup = $this->getMock( LabelDescriptionLookup::class );
$labelLookup->expects( $this->any() )
->method( 'getLabel' )
->will( $this->returnCallback( function( EntityId $id ) {
if ( $id->getSerialization() === 'Q112233' ) {
throw new LabelDescriptionLookupException( $id, 'No such label!' );
}
return new Term( 'en', 'LABEL:' . $id->getSerialization() );
} ) );
$idParser = new BasicEntityIdParser();
$formatter = new VocabularyUriFormatter( $idParser, $labelLookup, array( 'NotAUnit' ) );
$this->assertEquals( $expected, $formatter->format( $unit ) );
}
}