|
| 1 | +<?php declare( strict_types=1 ); |
| 2 | + |
| 3 | +namespace Wikibase\Repo\Tests\RestApi\Infrastructure; |
| 4 | + |
| 5 | +use PHPUnit\Framework\TestCase; |
| 6 | +use Site; |
| 7 | +use SiteLookup; |
| 8 | +use Wikibase\DataModel\Entity\ItemId; |
| 9 | +use Wikibase\DataModel\SiteLink; |
| 10 | +use Wikibase\DataModel\SiteLinkList; |
| 11 | +use Wikibase\Repo\RestApi\Domain\ReadModel\SiteLink as SiteLinkReadModel; |
| 12 | +use Wikibase\Repo\RestApi\Infrastructure\SiteLinksReadModelConverter; |
| 13 | + |
| 14 | +/** |
| 15 | + * @covers \Wikibase\Repo\RestApi\Infrastructure\SiteLinksReadModelConverter |
| 16 | + * |
| 17 | + * @group Wikibase |
| 18 | + * |
| 19 | + * @license GPL-2.0-or-later |
| 20 | + */ |
| 21 | +class SiteLinksReadModelConverterTest extends TestCase { |
| 22 | + |
| 23 | + private const EN_WIKI_URL_PREFIX = 'https://en.wikipedia.org/wiki/'; |
| 24 | + private const DE_WIKI_URL_PREFIX = 'https://de.wikipedia.org/wiki/'; |
| 25 | + |
| 26 | + public function testConvert(): void { |
| 27 | + $enSiteLink = new SiteLink( 'enwiki', 'potato' ); |
| 28 | + $deSiteLink = new SiteLink( 'dewiki', 'Kartoffel', [ new ItemId( 'Q123' ) ] ); |
| 29 | + |
| 30 | + $readModel = $this->newConverter()->convert( |
| 31 | + new SiteLinkList( [ $enSiteLink, $deSiteLink ] ) |
| 32 | + ); |
| 33 | + |
| 34 | + $this->assertEquals( |
| 35 | + new SiteLinkReadModel( |
| 36 | + $enSiteLink->getSiteId(), |
| 37 | + $enSiteLink->getPageName(), |
| 38 | + $enSiteLink->getBadges(), |
| 39 | + self::EN_WIKI_URL_PREFIX . $enSiteLink->getPageName() |
| 40 | + ), |
| 41 | + $readModel[0] |
| 42 | + ); |
| 43 | + $this->assertEquals( |
| 44 | + new SiteLinkReadModel( |
| 45 | + $deSiteLink->getSiteId(), |
| 46 | + $deSiteLink->getPageName(), |
| 47 | + $deSiteLink->getBadges(), |
| 48 | + self::DE_WIKI_URL_PREFIX . $deSiteLink->getPageName() |
| 49 | + ), |
| 50 | + $readModel[1] |
| 51 | + ); |
| 52 | + } |
| 53 | + |
| 54 | + private function newConverter(): SiteLinksReadModelConverter { |
| 55 | + $enSite = new Site(); |
| 56 | + $enSite->setLinkPath( self::EN_WIKI_URL_PREFIX . '$1' ); |
| 57 | + $deSite = new Site(); |
| 58 | + $deSite->setLinkPath( self::DE_WIKI_URL_PREFIX . '$1' ); |
| 59 | + |
| 60 | + $siteLookup = $this->createStub( SiteLookup::class ); |
| 61 | + $siteLookup->method( 'getSite' )->willReturnMap( [ |
| 62 | + [ 'enwiki', $enSite ], |
| 63 | + [ 'dewiki', $deSite ], |
| 64 | + ] ); |
| 65 | + |
| 66 | + return new SiteLinksReadModelConverter( $siteLookup ); |
| 67 | + } |
| 68 | + |
| 69 | +} |
0 commit comments