Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/repo/tests/phpunit/includes/SiteLinkTargetProviderTest.php
<?php

namespace Wikibase\Tests\Repo;

use HashSiteStore;
use PHPUnit_Framework_TestCase;
use Site;
use SiteStore;
use Wikibase\Repo\SiteLinkTargetProvider;

/**
 * @covers Wikibase\Repo\SiteLinkTargetProvider
 *
 * @group Wikibase
 * @group WikibaseRepo
 *
 * @license GPL-2.0+
 * @author Addshore
 * @author Marius Hoch < hoo@online.de >
 * @author Thiemo Mättig
 */
class SiteLinkTargetProviderTest extends PHPUnit_Framework_TestCase {

	/**
	 * @dataProvider getSiteListProvider
	 */
	public function testGetSiteList(
		array $groups,
		array $specialGroups,
		array $expectedGlobalIds
	) {
		$provider = new SiteLinkTargetProvider( $this->getSiteStore(), $specialGroups );
		$siteList = $provider->getSiteList( $groups );

		$globalIds = array();
		/** @var Site $site */
		foreach ( $siteList as $site ) {
			$globalIds[] = $site->getGlobalId();
		}
		$this->assertSame( $expectedGlobalIds, $globalIds );
	}

	public function getSiteListProvider() {
		return array(
			array(
				array( 'wikipedia' ),
				array(),
				array( 'dawiki', 'eswiki' )
			),
			array(
				array( 'species' ), array(), array( 'specieswiki' ) ),
			array(
				array( 'wikiquote' ),
				array(),
				array( 'eswikiquote' )
			),
			array(
				array( 'qwerty' ),
				array(),
				array()
			),
			array(
				array( 'wikipedia', 'species' ),
				array(),
				array( 'dawiki', 'eswiki', 'specieswiki' )
			),
			array(
				array( 'wikipedia', 'wikiquote' ),
				array(),
				array( 'dawiki', 'eswiki', 'eswikiquote' )
			),
			array(
				array( 'special' ),
				array( 'species' ),
				array( 'specieswiki' )
			),
			array(
				array( 'wikipedia' ),
				array( 'species' ),
				array( 'dawiki', 'eswiki' )
			),
			array(
				array( 'special', 'wikipedia' ),
				array( 'species', 'wikiquote' ),
				array( 'dawiki', 'eswiki', 'eswikiquote', 'specieswiki' )
			),
			array(
				array(),
				array( 'wikipedia' ),
				array()
			),
			array(
				array(),
				array(),
				array()
			),
		);
	}

	/**
	 * @return SiteStore
	 */
	private function getSiteStore() {
		return new HashSiteStore( array(
			$this->newSite( 'dawiki', 'wikipedia' ),
			$this->newSite( 'eswiki', 'wikipedia' ),
			$this->newSite( 'eswikiquote', 'wikiquote' ),
			$this->newSite( 'specieswiki', 'species' ),
		) );
	}

	private function newSite( $globalId, $group ) {
		$site = new Site();
		$site->setGlobalId( $globalId );
		$site->setGroup( $group );
		return $site;
	}

}