/** * @dataProvider conditions */ public function testAddItemToCache($articleExist, $articlesList, $cachedList, $expectedResult, $brokenCache = false) { // Game $articlesIdentifiers = array(); foreach ($articlesList as $art) { $articlesIdentifiers[] = ScavengerHunt::makeIdentifier(self::LANDING_WIKI_ID, $art); } $mockedGame = $this->getMock('ScavengerHuntGame', array('getArticleIdentifier'), array($this->app)); $mockedGame->expects($this->any())->method('getArticleIdentifier')->will($this->returnValue($articlesIdentifiers)); $this->mockClass('ScavengerHuntGame', $mockedGame); $game = $this->getFakeGame(); // Hunt $scavengerHunt = $this->getMock('ScavengerHunt', array('getDataFromCache', 'saveDataToCache')); $scavengerHunt->setGame($articleExist ? $game : null); $cachedIdentifiers = array(); foreach ($cachedList as $art) { $cachedIdentifiers[] = ScavengerHunt::makeIdentifier(self::LANDING_WIKI_ID, $art); } $scavengerHunt->expects($this->any())->method('saveDataToCache')->will($this->returnValue(true)); $scavengerHunt->expects($this->any())->method('getDataFromCache')->will($this->returnValue(array('gameId' => $scavengerHunt->getHuntId(), ScavengerHunt::VISITED_ART_KEY => $brokenCache ? 'broken' : $cachedIdentifiers))); // User $mockedUser = $this->getMock('User', array('isAnon')); $mockedUser->expects($this->any())->method('isAnon')->will($this->returnValue(self::MOCK_USER_NAME)); $this->mockClass('User', $mockedUser); $_COOKIE[$scavengerHunt->getHuntIdKey()] = $articleExist ? self::MOCK_GAME_ID : 0; $result = $scavengerHunt->addItemToCache(self::MOCK_TEXT, self::LANDING_WIKI_ID); $this->assertEquals(empty($result), empty($expectedResult)); }
/** * @dataProvider conditions */ public function testGetFoundIndexes($gameExists, $articlesList, $foundList, $expectedResult, $brokenCache = false) { // mocking game object $articlesIdentifiers = array(); foreach ($articlesList as $art) { $articlesIdentifiers[] = ScavengerHunt::makeIdentifier(self::LANDING_WIKI_ID, $art); } $mockedGame = $this->getMock('ScavengerHuntGame', array('getArticleIdentifier'), array($this->app)); $mockedGame->expects($this->any())->method('getArticleIdentifier')->will($this->returnValue($articlesIdentifiers)); $this->mockClass('ScavengerHuntGame', $mockedGame); $game = $this->getFakeGame(); // mocking scavenger hunt and passing game to the hunt $scavengerHunt = $this->getMock('ScavengerHunt', array('getDataFromCache')); $scavengerHunt->setGame($gameExists ? $game : null); $cachedIdentifiers = array(); foreach ($foundList as $art) { $cachedIdentifiers[] = ScavengerHunt::makeIdentifier(self::LANDING_WIKI_ID, $art); } $scavengerHunt->expects($this->any())->method('getDataFromCache')->will($this->returnValue(array('gameId' => $scavengerHunt->getHuntId(), ScavengerHunt::VISITED_ART_KEY => $brokenCache ? 'broken' : $cachedIdentifiers))); // mocking user $mockedUser = $this->getMock('User', array('isAnon')); $mockedUser->expects($this->any())->method('isAnon')->will($this->returnValue(self::MOCK_USER_NAME)); $this->mockClass('User', $mockedUser); // setting cookie values $_COOKIE[$scavengerHunt->getHuntIdKey()] = $gameExists ? self::MOCK_GAME_ID : 0; // test and assertions $result = $scavengerHunt->getFoundIndexes(); $this->assertEquals($expectedResult, $result); }
/** * @dataProvider conditions */ public function testGameNotLoaded($isUserAnon, $cookieValue) { // starting conditions $scavengerHunt = new ScavengerHunt(); $scavengerHunt->setGame(null); $mockedUser = $this->getMock('User', array('isAnon', 'getName')); $mockedUser->expects($this->any())->method('isAnon')->will($this->returnValue(self::MOCK_USER_NAME)); $mockedUser->expects($this->any())->method('getName')->will($this->returnValue(self::MOCK_USER_NAME)); $this->mockClass('User', $mockedUser); $_COOKIE[$scavengerHunt->getHuntIdKey()] = $cookieValue; // mocks $oFakeGame = $this->getFakeGame(); // test $oFinalGame = $scavengerHunt->getActiveGame(); if (empty($cookieValue)) { $this->assertEmpty($oFinalGame); } else { $this->assertNotEmpty($oFinalGame); $oFakeGameID = $oFinalGame->getId(); $this->assertEquals($oFakeGameID, $oFinalGame->getId()); } }
public function getArticleIdentifier() { $articleIdentifiers = array(); foreach ($this->articles as $article) { $articleIdentifiers[] = ScavengerHunt::makeIdentifier($article->getWikiId(), $article->getArticleName()); } return $articleIdentifiers; }
private function getFinalModalArray() { $aReturn = array(); $game = $this->getActiveGame(); if ($this->isGameCompleated()) { $template = WF::build('EasyTemplate', array(dirname(__FILE__) . '/templates/')); /** @var $template EasyTemplate */ $template->set_vars(array('game' => $game)); $aReturn['text'] = $template->render('modal-form'); $aReturn['title'] = $game->getEntryFormTitle(); $aReturn['image'] = ScavengerHunt::formatSpriteForJS($game->getFinishPopupSprite()); } return $aReturn; }
/** * @return array|bool|Mixed */ public function getJSParamsForCurrent() { $cityId = $this->app->wg->cityId; $articleName = $this->app->wg->title->getPartialURL(); if (!$this->isPagePartOfAnyHunt($cityId, $articleName)) { return false; } $key = wfSharedMemcKey('ScavengerHuntIndexer', $cityId, md5($articleName)); $value = $this->getCache()->get($key); if (empty($value)) { self::log('performance', __METHOD__); $enabledGames = $this->getEnabledGames(); $value = array(); foreach ($enabledGames as $game) { $template = WF::build('EasyTemplate', array(dirname(__FILE__) . '/../templates/')); /* @var $template EasyTemplate */ $template->set_vars(array('game' => $game)); if ($game->getLandingArticleName() == $articleName) { $value['wgScavengerHuntStart'][] = (int) $game->getId(); $value['wgScavengerHuntStartMsg'][] = $game->getLandingButtonText(); $value['wgScavengerHuntStartPosition'][] = array('X' => $game->getLandingButtonX(), 'Y' => $game->getLandingButtonY()); $value['wgScavengerHuntStartClueTitle'][] = $game->getStartingClueTitle(); $value['wgScavengerHuntSpriteImg'][] = $game->getSpriteImg(); $value['wgScavengerHuntSprite'][] = ScavengerHunt::formatSpriteForJS(array('sprite' => $game->getStartPopupSprite()), 'sprite'); $value['wgScavengerHuntStartClueHtml'][] = $template->render('modal-starting'); } } $value['wgCookieDomain'] = $this->app->wg->cookieDomain; $this->getCache()->set($key, $value, self::CACHE_TTL); } else { self::log('performance(cache)', __METHOD__); } return $value; }
public function getCurrentUserGameData() { $helper = new ScavengerHunt(); $this->setVal('key', $helper->getCacheKey()); $wgMemc = $this->app->getGlobal('wgMemc'); $memcData = $wgMemc->get($helper->getCacheKey()); $this->setVal('val', $memcData); }