/** * @depends testAjaxChangeStatus */ public function testSendEmailInNewComment() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $mary = User::getByUsername('mary'); $missions = Mission::getAll(); $this->assertEquals(1, count($missions)); $mission = $missions[0]; $this->assertEquals(0, $mission->comments->count()); foreach (EmailMessage::getAll() as $emailMessage) { $emailMessage->delete(); } $messageCount = 0; $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); //Save new comment. $this->setGetArray(array('relatedModelId' => $mission->id, 'relatedModelClassName' => 'Mission', 'relatedModelRelationName' => 'comments', 'redirectUrl' => 'someRedirect')); $this->setPostArray(array('Comment' => array('description' => 'a ValidComment Name'))); $content = $this->runControllerWithRedirectExceptionAndGetContent('comments/default/inlineCreateSave'); $this->assertEquals(1, $mission->comments->count()); $this->assertEquals($messageCount + 1, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); $emailMessages = EmailMessage::getAll(); $emailMessage = $emailMessages[$messageCount]; $this->assertEquals(1, count($emailMessage->recipients)); $this->assertContains('mission', $emailMessage->subject); $this->assertContains(strval($mission), $emailMessage->subject); $this->assertContains(strval($mission->comments[0]), $emailMessage->content->htmlContent); $this->assertContains(strval($mission->comments[0]), $emailMessage->content->textContent); }
public function testScoreOnSaveModelForMissionMovingThroughStatusChanges() { $super = User::getByUsername('super'); // asserting simpleUser score before taken/completed/accepted of mission $simpleUser = UserTestHelper::createBasicUser('simpleUser'); $gamescore = GameScore::getAllByPersonIndexedByType($simpleUser); $this->assertEquals(0, count($gamescore)); $scoreTypeMissionTaken = MissionGamificationRules::SCORE_TYPE_TAKE_MISSION; $gameScore = GameScore::resolveToGetByTypeAndPerson($scoreTypeMissionTaken, $simpleUser); $this->assertEquals(0, count($gamescore)); $scoreTypeMissionComplete = MissionGamificationRules::SCORE_TYPE_COMPLETE_MISSION; $gameScore = GameScore::resolveToGetByTypeAndPerson($scoreTypeMissionComplete, $simpleUser); $this->assertEquals(0, count($gamescore)); $scoreTypeMissionAccepted = MissionGamificationRules::SCORE_TYPE_ACCEPTED_MISSION; $gameScore = GameScore::resolveToGetByTypeAndPerson($scoreTypeMissionAccepted, $simpleUser); $this->assertEquals(0, count($gamescore)); $missions = Mission::getAll(); $this->assertEquals(0, count($missions)); $mission = new Mission(); $mission->owner = $super; $mission->takenByUser = $simpleUser; $mission->description = 'Test description'; $mission->reward = 'Test reward'; $mission->status = Mission::STATUS_AVAILABLE; $mission->save(); //Confirm mission saved. $missions = Mission::getAll(); $this->assertEquals(1, count($missions)); $gamescore = GameScore::getAllByPersonIndexedByType($super); $this->assertEquals(1, count($gamescore)); //Changing Status to Taken $mission = $missions[0]; $mission->status = Mission::STATUS_TAKEN; $this->assertTrue($mission->save()); $missions = Mission::getAll(); $this->assertEquals(1, count($missions)); $scoreTypeMissionTaken = MissionGamificationRules::SCORE_TYPE_TAKE_MISSION; $gameScore = GameScore::resolveToGetByTypeAndPerson($scoreTypeMissionTaken, $simpleUser); $this->assertEquals(1, count($gamescore)); $gamescoreOfUser = GameScore::getAllByPersonIndexedByType($simpleUser); $this->assertEquals(1, count($gamescoreOfUser)); //Changing Status to Completed $mission = $missions[0]; $mission->status = Mission::STATUS_COMPLETED; $mission->save(); $missions = Mission::getAll(); $this->assertEquals(1, count($missions)); $scoreTypeMissionComplete = MissionGamificationRules::SCORE_TYPE_COMPLETE_MISSION; $gameScore = GameScore::resolveToGetByTypeAndPerson($scoreTypeMissionComplete, $simpleUser); $this->assertEquals(1, count($gamescore)); $gamescoreOfUser = GameScore::getAllByPersonIndexedByType($simpleUser); $this->assertEquals(2, count($gamescoreOfUser)); //Changing Status to Accepted $mission = $missions[0]; $mission->status = Mission::STATUS_ACCEPTED; $mission->save(); $missions = Mission::getAll(); $this->assertEquals(1, count($missions)); $scoreTypeMissionAccepted = MissionGamificationRules::SCORE_TYPE_ACCEPTED_MISSION; $gameScore = GameScore::resolveToGetByTypeAndPerson($scoreTypeMissionAccepted, $simpleUser); $this->assertEquals(1, count($gamescore)); $gamescoreOfUser = GameScore::getAllByPersonIndexedByType($simpleUser); $this->assertEquals(3, count($gamescoreOfUser)); }
/** * @depends testAddingComments */ public function testDeleteMission() { $missions = Mission::getAll(); $comments = Comment::getAll(); $personsWhoHaveNotReadLatest = PersonWhoHaveNotReadLatest::getAll(); $this->assertGreaterThan(0, count($missions)); $this->assertGreaterThan(0, count($comments)); $this->assertGreaterThan(0, count($personsWhoHaveNotReadLatest)); foreach ($missions as $mission) { $missionId = $mission->id; $mission->forget(); $mission = Mission::getById($missionId); $deleted = $mission->delete(); $this->assertTrue($deleted); } //check that all comments and personsWhoHaveNotReadLatest are removed, since they are owned. $comments = Comment::getAll(); $this->assertEquals(0, count($comments)); $missions = Mission::getAll(); $this->assertEquals(0, count($missions)); $personsWhoHaveNotReadLatest = PersonWhoHaveNotReadLatest::getAll(); $this->assertEquals(0, count($personsWhoHaveNotReadLatest)); }
public function testResolvePeopleToSendNotificationToOnNewMission() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $steven = User::getByUsername('steven'); $mary = UserTestHelper::createBasicUser('mary'); $missions = Mission::getAll(); $mission = $missions[0]; $people = MissionsUtil::resolvePeopleToSendNotificationToOnNewMission($mission); $this->assertNotContains($super, $people); $this->assertContains($steven, $people); $this->assertContains($mary, $people); }
public function testResolvePeopleToSendNotificationToOnNewMission() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $steven = User::getByUsername('steven'); $jack = User::getByUsername('jack'); // assert steven is active user $this->assertEquals(1, $steven->isActive); // assert steven is active user $this->assertEquals(1, $jack->isActive); // assert steven have access to missions module $this->assertTrue(RightsUtil::canUserAccessModule('MissionsModule', $steven)); // assert jack dont have access to missions module $this->assertFalse(RightsUtil::canUserAccessModule('MissionsModule', $jack)); $missions = Mission::getAll(); $mission = $missions[0]; $people = MissionsUtil::resolvePeopleToSendNotificationToOnNewMission($mission); // assert active user will get notification on creation of new mission $this->assertEquals(1, count($people)); $this->assertNotContains($super, $people); $this->assertContains($steven, $people); $this->assertNotContains($jack, $people); // Change the user's status to inactive and confirm the changes in rights and isActive attribute. $steven = User::getByUsername('steven'); $steven->setRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB, RIGHT::DENY); $this->assertTrue($steven->save()); // assert steven is inactive user $this->assertEquals(0, $steven->isActive); $missions = Mission::getAll(); $mission = $missions[0]; $people = MissionsUtil::resolvePeopleToSendNotificationToOnNewMission($mission); // assert inactive user won't get notification on creation of new mission $this->assertEquals(0, count($people)); $this->assertNotContains($super, $people); $this->assertNotContains($steven, $people); $this->assertNotContains($jack, $people); }
protected function deleteAllMissions() { foreach (Mission::getAll() as $mission) { $mission->delete(); } }