/**
  * @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));
 }
Пример #3
0
 /**
  * @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));
 }
Пример #4
0
 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();
     }
 }