*/ class SiteSQLStoreTest extends MediaWikiTestCase { public function testGetSites() { $expectedSites = TestSites::getSites(); TestSites::insertIntoDb(); $store = SiteSQLStore::newInstance(); $sites = $store->getSites(); $this->assertInstanceOf( 'SiteList', $sites ); /** * @var Site $site */ foreach ( $sites as $site ) { $this->assertInstanceOf( 'Site', $site ); } foreach ( $expectedSites as $site ) { if ( $site->getGlobalId() !== null ) { $this->assertTrue( $sites->hasSite( $site->getGlobalId() ) ); } } } public function testSaveSites() { $store = SiteSQLStore::newInstance(); $sites = array(); $site = new Site(); $site->setGlobalId( 'ertrywuutr' ); $site->setLanguageCode( 'en' ); $sites[] = $site; $site = new MediaWikiSite(); $site->setGlobalId( 'sdfhxujgkfpth' ); $site->setLanguageCode( 'nl' ); $sites[] = $site; $this->assertTrue( $store->saveSites( $sites ) ); $site = $store->getSite( 'ertrywuutr' ); $this->assertInstanceOf( 'Site', $site ); $this->assertEquals( 'en', $site->getLanguageCode() ); $this->assertTrue( is_integer( $site->getInternalId() ) ); $this->assertTrue( $site->getInternalId() >= 0 ); $site = $store->getSite( 'sdfhxujgkfpth' ); $this->assertInstanceOf( 'Site', $site ); $this->assertEquals( 'nl', $site->getLanguageCode() ); $this->assertTrue( is_integer( $site->getInternalId() ) ); $this->assertTrue( $site->getInternalId() >= 0 ); } public function testReset() { $store1 = SiteSQLStore::newInstance(); $store2 = SiteSQLStore::newInstance(); // initialize internal cache $this->assertGreaterThan( 0, $store1->getSites()->count() ); $this->assertGreaterThan( 0, $store2->getSites()->count() ); // Clear actual data. Will purge the external cache and reset the internal // cache in $store1, but not the internal cache in store2. $this->assertTrue( $store1->clear() ); // sanity check: $store2 should have a stale cache now $this->assertNotNull( $store2->getSite( 'enwiki' ) ); // purge cache $store2->reset(); // ...now the internal cache of $store2 should be updated and thus empty. $site = $store2->getSite( 'enwiki' ); $this->assertNull( $site ); } public function testClear() { $store = SiteSQLStore::newInstance(); $this->assertTrue( $store->clear() ); $site = $store->getSite( 'enwiki' ); $this->assertNull( $site ); $sites = $store->getSites(); $this->assertEquals( 0, $sites->count() ); } }