3 use MediaWiki\Title\TitleValue
;
7 * @covers \MediaWiki\Linker\LinkTargetStore
9 class LinkTargetStoreTest
extends MediaWikiIntegrationTestCase
{
11 public static function provideLinkTargets() {
12 yield
[ new TitleValue( NS_SPECIAL
, 'BlankPage' ) ];
13 yield
[ new TitleValue( NS_MAIN
, 'Foobar' ) ];
14 yield
[ new TitleValue( NS_USER
, 'Someuser' ) ];
18 * @dataProvider provideLinkTargets
19 * @covers \MediaWiki\Linker\LinkTargetStore::acquireLinkTargetId
21 public function testAcquireLinkTargetId( $target ) {
22 $linkTargetStore = $this->getServiceContainer()->getLinkTargetLookup();
24 $id = $linkTargetStore->acquireLinkTargetId( $target, $db );
25 $row = $db->newSelectQueryBuilder()
26 ->select( [ 'lt_id', 'lt_namespace', 'lt_title' ] )
27 ->from( 'linktarget' )
28 ->where( [ 'lt_namespace' => $target->getNamespace(), 'lt_title' => $target->getDBkey() ] )
30 $this->assertSame( (int)$row->lt_id
, $id );
34 * @dataProvider provideLinkTargets
35 * @covers \MediaWiki\Linker\LinkTargetStore::acquireLinkTargetId
36 * @covers \MediaWiki\Linker\LinkTargetStore::getLinkTargetById
38 public function testGetLinkTargetById( $target ) {
39 $linkTargetStore = $this->getServiceContainer()->getLinkTargetLookup();
41 $id = $linkTargetStore->acquireLinkTargetId( $target, $db );
42 $actualLinkTarget = $linkTargetStore->getLinkTargetById( $id, $db );
43 $this->assertEquals( $target, $actualLinkTarget );
47 * @dataProvider provideLinkTargets
48 * @covers \MediaWiki\Linker\LinkTargetStore::acquireLinkTargetId
49 * @covers \MediaWiki\Linker\LinkTargetStore::getLinkTargetById
51 public function testGetLinkTargetByIdWithoutCache( $target ) {
52 $linkTargetStore = $this->getServiceContainer()->getLinkTargetLookup();
54 $id = $linkTargetStore->acquireLinkTargetId( $target, $db );
55 $linkTargetStore->clearClassCache();
56 $actualLinkTarget = $linkTargetStore->getLinkTargetById( $id, $db );
57 $this->assertEquals( $target, $actualLinkTarget );