1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Wikibase\DataModel\Services\Tests\EntityId; |
4
|
|
|
|
5
|
|
|
use Wikibase\DataModel\Entity\BasicEntityIdParser; |
6
|
|
|
use Wikibase\DataModel\Entity\EntityIdParsingException; |
7
|
|
|
use Wikibase\DataModel\Entity\ItemId; |
8
|
|
|
use Wikibase\DataModel\Entity\PropertyId; |
9
|
|
|
use Wikibase\DataModel\Services\EntityId\PrefixedEntityIdParser; |
10
|
|
|
|
11
|
|
|
/** |
12
|
|
|
* @covers Wikibase\DataModel\Services\EntityId\PrefixedEntityIdParser |
13
|
|
|
* |
14
|
|
|
* @license GPL-2.0+ |
15
|
|
|
* @author Daniel Kinzler |
16
|
|
|
*/ |
17
|
|
|
class PrefixedEntityIdParserTest extends \PHPUnit_Framework_TestCase { |
18
|
|
|
|
19
|
|
|
public function validInputProvider() { |
20
|
|
|
return [ |
21
|
|
|
'base URI' => [ 'http://acme.test/entity/', 'http://acme.test/entity/Q14', new ItemId( 'Q14' ) ], |
22
|
|
|
'interwiki prefix' => [ 'wikidata:', 'wikidata:P14', new PropertyId( 'P14' ) ], |
23
|
|
|
]; |
24
|
|
|
} |
25
|
|
|
|
26
|
|
|
/** |
27
|
|
|
* @dataProvider validInputProvider |
28
|
|
|
*/ |
29
|
|
|
public function testParse( $prefix, $input, $expected ) { |
30
|
|
|
$parser = new PrefixedEntityIdParser( $prefix, new BasicEntityIdParser() ); |
31
|
|
|
$this->assertEquals( $expected, $parser->parse( $input ) ); |
32
|
|
|
} |
33
|
|
|
|
34
|
|
|
public function invalidInputProvider() { |
35
|
|
|
return [ |
36
|
|
|
'mismatching prefix' => [ 'http://acme.test/entity/', 'http://www.wikidata.org/entity/Q14' ], |
37
|
|
|
'incomplete prefix' => [ 'http://acme.test/entity/', 'http://acme.test/Q14' ], |
38
|
|
|
'bad ID after prefix' => [ 'http://acme.test/entity/', 'http://acme.test/entity/XYYZ' ], |
39
|
|
|
'extra stuff after ID' => [ 'http://acme.test/entity/', 'http://acme.test/entity/Q14#foo' ], |
40
|
|
|
'input is shorter than prefix' => [ 'http://acme.test/entity/', 'http://acme.test/' ], |
41
|
|
|
'input is same as prefix' => [ 'http://acme.test/entity/', 'http://acme.test/entity/' ], |
42
|
|
|
'input is lexicographically smaller than prefix' => [ 'http://acme.test/entity/', 'http://aaaa.test/entity/Q14' ], |
43
|
|
|
'input is lexicographically greater than prefix' => [ 'http://acme.test/entity/', 'http://cccc.test/entity/Q14' ], |
44
|
|
|
]; |
45
|
|
|
} |
46
|
|
|
|
47
|
|
|
/** |
48
|
|
|
* @dataProvider invalidInputProvider |
49
|
|
|
*/ |
50
|
|
|
public function testParse_invalid( $prefix, $input ) { |
51
|
|
|
$parser = new PrefixedEntityIdParser( $prefix, new BasicEntityIdParser() ); |
52
|
|
|
|
53
|
|
|
$this->setExpectedException( EntityIdParsingException::class ); |
|
|
|
|
54
|
|
|
$parser->parse( $input ); |
55
|
|
|
} |
56
|
|
|
|
57
|
|
|
} |
58
|
|
|
|
This method has been deprecated. The supplier of the class has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.