*/ class SiteListTest extends MediaWikiTestCase { /** * Returns instances of SiteList implementing objects. * @return array */ public function siteListProvider() { $sitesArrays = $this->siteArrayProvider(); $listInstances = array(); foreach ( $sitesArrays as $sitesArray ) { $listInstances[] = new SiteList( $sitesArray[0] ); } return $this->arrayWrap( $listInstances ); } /** * Returns arrays with instances of Site implementing objects. * @return array */ public function siteArrayProvider() { $sites = TestSites::getSites(); $siteArrays = array(); $siteArrays[] = $sites; $siteArrays[] = array( array_shift( $sites ) ); $siteArrays[] = array( array_shift( $sites ), array_shift( $sites ) ); return $this->arrayWrap( $siteArrays ); } /** * @dataProvider siteListProvider * @param SiteList $sites */ public function testIsEmpty( SiteList $sites ) { $this->assertEquals( count( $sites ) === 0, $sites->isEmpty() ); } /** * @dataProvider siteListProvider * @param SiteList $sites */ public function testGetSiteByGlobalId( SiteList $sites ) { if ( $sites->isEmpty() ) { $this->assertTrue( true ); } else { /** * @var Site $site */ foreach ( $sites as $site ) { $this->assertEquals( $site, $sites->getSite( $site->getGlobalId() ) ); } } } /** * @dataProvider siteListProvider * @param SiteList $sites */ public function testGetSiteByInternalId( $sites ) { /** * @var Site $site */ foreach ( $sites as $site ) { if ( is_integer( $site->getInternalId() ) ) { $this->assertEquals( $site, $sites->getSiteByInternalId( $site->getInternalId() ) ); } } $this->assertTrue( true ); } /** * @dataProvider siteListProvider * @param SiteList $sites */ public function testHasGlobalId( $sites ) { $this->assertFalse( $sites->hasSite( 'non-existing-global-id' ) ); $this->assertFalse( $sites->hasInternalId( 720101010 ) ); if ( !$sites->isEmpty() ) { /** * @var Site $site */ foreach ( $sites as $site ) { $this->assertTrue( $sites->hasSite( $site->getGlobalId() ) ); } } } /** * @dataProvider siteListProvider * @param SiteList $sites */ public function testHasInternallId( $sites ) { /** * @var Site $site */ foreach ( $sites as $site ) { if ( is_integer( $site->getInternalId() ) ) { $this->assertTrue( $site, $sites->hasInternalId( $site->getInternalId() ) ); } } $this->assertFalse( $sites->hasInternalId( -1 ) ); } /** * @dataProvider siteListProvider * @param SiteList $sites */ public function testGetGlobalIdentifiers( SiteList $sites ) { $identifiers = $sites->getGlobalIdentifiers(); $this->assertTrue( is_array( $identifiers ) ); $expected = array(); /** * @var Site $site */ foreach ( $sites as $site ) { $expected[] = $site->getGlobalId(); } $this->assertArrayEquals( $expected, $identifiers ); } /** * @dataProvider siteListProvider * * @since 1.21 * * @param SiteList $list */ public function testSerialization( SiteList $list ) { $serialization = serialize( $list ); /** * @var SiteArray $copy */ $copy = unserialize( $serialization ); $this->assertArrayEquals( $list->getGlobalIdentifiers(), $copy->getGlobalIdentifiers() ); /** * @var Site $site */ foreach ( $list as $site ) { $this->assertTrue( $copy->hasInternalId( $site->getInternalId() ) ); } } }