*/ class SiteListFileCacheTest extends PHPUnit_Framework_TestCase { public function testGetSites() { $cacheFile = $this->getCacheFile(); $sites = $this->getSites(); $cacheBuilder = $this->newSiteListFileCacheBuilder( $sites, $cacheFile ); $cacheBuilder->build(); $cache = new SiteListFileCache( $cacheFile ); $this->assertEquals( $sites, $cache->getSites() ); } public function testGetSite() { $cacheFile = $this->getCacheFile(); $sites = $this->getSites(); $cacheBuilder = $this->newSiteListFileCacheBuilder( $sites, $cacheFile ); $cacheBuilder->build(); $cache = new SiteListFileCache( $cacheFile ); $this->assertEquals( $sites->getSite( 'enwiktionary' ), $cache->getSite( 'enwiktionary' ) ); } private function newSiteListFileCacheBuilder( SiteList $sites, $cacheFile ) { return new SiteListFileCacheBuilder( $this->getSiteSQLStore( $sites ), $cacheFile ); } private function getSiteSQLStore( SiteList $sites ) { $siteSQLStore = $this->getMockBuilder( 'SiteSQLStore' ) ->disableOriginalConstructor() ->getMock(); $siteSQLStore->expects( $this->any() ) ->method( 'getSites' ) ->will( $this->returnValue( $sites ) ); return $siteSQLStore; } private function getSites() { $sites = array(); $site = new Site(); $site->setGlobalId( 'foobar' ); $sites[] = $site; $site = new MediaWikiSite(); $site->setGlobalId( 'enwiktionary' ); $site->setGroup( 'wiktionary' ); $site->setLanguageCode( 'en' ); $site->addNavigationId( 'enwiktionary' ); $site->setPath( MediaWikiSite::PATH_PAGE, "https://en.wiktionary.org/wiki/$1" ); $site->setPath( MediaWikiSite::PATH_FILE, "https://en.wiktionary.org/w/$1" ); $sites[] = $site; return new SiteList( $sites ); } private function getCacheFile() { return sys_get_temp_dir() . '/sites-' . time() . '.json'; } }