MediaWiki  REL1_24
SiteListTest.php
Go to the documentation of this file.
00001 <?php
00002 
00032 class SiteListTest extends MediaWikiTestCase {
00033 
00038     public function siteListProvider() {
00039         $sitesArrays = $this->siteArrayProvider();
00040 
00041         $listInstances = array();
00042 
00043         foreach ( $sitesArrays as $sitesArray ) {
00044             $listInstances[] = new SiteList( $sitesArray[0] );
00045         }
00046 
00047         return $this->arrayWrap( $listInstances );
00048     }
00049 
00054     public function siteArrayProvider() {
00055         $sites = TestSites::getSites();
00056 
00057         $siteArrays = array();
00058 
00059         $siteArrays[] = $sites;
00060 
00061         $siteArrays[] = array( array_shift( $sites ) );
00062 
00063         $siteArrays[] = array( array_shift( $sites ), array_shift( $sites ) );
00064 
00065         return $this->arrayWrap( $siteArrays );
00066     }
00067 
00073     public function testIsEmpty( SiteList $sites ) {
00074         $this->assertEquals( count( $sites ) === 0, $sites->isEmpty() );
00075     }
00076 
00082     public function testGetSiteByGlobalId( SiteList $sites ) {
00086         foreach ( $sites as $site ) {
00087             $this->assertEquals( $site, $sites->getSite( $site->getGlobalId() ) );
00088         }
00089 
00090         $this->assertTrue( true );
00091     }
00092 
00098     public function testGetSiteByInternalId( $sites ) {
00102         foreach ( $sites as $site ) {
00103             if ( is_integer( $site->getInternalId() ) ) {
00104                 $this->assertEquals( $site, $sites->getSiteByInternalId( $site->getInternalId() ) );
00105             }
00106         }
00107 
00108         $this->assertTrue( true );
00109     }
00110 
00116     public function testGetSiteByNavigationId( $sites ) {
00120         foreach ( $sites as $site ) {
00121             $ids = $site->getNavigationIds();
00122             foreach ( $ids as $navId ) {
00123                 $this->assertEquals( $site, $sites->getSiteByNavigationId( $navId ) );
00124             }
00125         }
00126 
00127         $this->assertTrue( true );
00128     }
00129 
00135     public function testHasGlobalId( $sites ) {
00136         $this->assertFalse( $sites->hasSite( 'non-existing-global-id' ) );
00137         $this->assertFalse( $sites->hasInternalId( 720101010 ) );
00138 
00139         if ( !$sites->isEmpty() ) {
00143             foreach ( $sites as $site ) {
00144                 $this->assertTrue( $sites->hasSite( $site->getGlobalId() ) );
00145             }
00146         }
00147     }
00148 
00154     public function testHasInternallId( $sites ) {
00158         foreach ( $sites as $site ) {
00159             if ( is_integer( $site->getInternalId() ) ) {
00160                 $this->assertTrue( $site, $sites->hasInternalId( $site->getInternalId() ) );
00161             }
00162         }
00163 
00164         $this->assertFalse( $sites->hasInternalId( -1 ) );
00165     }
00166 
00172     public function testHasNavigationId( $sites ) {
00176         foreach ( $sites as $site ) {
00177             $ids = $site->getNavigationIds();
00178             foreach ( $ids as $navId ) {
00179                 $this->assertTrue( $sites->hasNavigationId( $navId ) );
00180             }
00181         }
00182 
00183         $this->assertFalse( $sites->hasNavigationId( 'non-existing-navigation-id' ) );
00184     }
00185 
00191     public function testGetGlobalIdentifiers( SiteList $sites ) {
00192         $identifiers = $sites->getGlobalIdentifiers();
00193 
00194         $this->assertTrue( is_array( $identifiers ) );
00195 
00196         $expected = array();
00197 
00201         foreach ( $sites as $site ) {
00202             $expected[] = $site->getGlobalId();
00203         }
00204 
00205         $this->assertArrayEquals( $expected, $identifiers );
00206     }
00207 
00217     public function testSerialization( SiteList $list ) {
00218         $serialization = serialize( $list );
00222         $copy = unserialize( $serialization );
00223 
00224         $this->assertArrayEquals( $list->getGlobalIdentifiers(), $copy->getGlobalIdentifiers() );
00225 
00229         foreach ( $list as $site ) {
00230             $this->assertTrue( $copy->hasInternalId( $site->getInternalId() ) );
00231 
00232             foreach ( $site->getNavigationIds() as $navId ) {
00233                 $this->assertTrue(
00234                     $copy->hasNavigationId( $navId ),
00235                     'unserialized data expects nav id ' . $navId . ' for site ' . $site->getGlobalId()
00236                 );
00237             }
00238         }
00239     }
00240 }