コード例 #1
0
 public function setUp()
 {
     parent::setUp();
     Yii::app()->user->userModel = User::getByUsername('super');
     EmailMessage::deleteAll();
     Notification::deleteAll();
 }
コード例 #2
0
 public function testSubmittingDuplicateNotifications()
 {
     $user = $this->user;
     Notification::deleteAll();
     EmailMessage::deleteAll();
     $message = new NotificationMessage();
     $message->textContent = 'text content';
     $message->htmlContent = 'html content';
     $rules = new SimpleNotificationRules();
     $rules->setCritical(true);
     $rules->setAllowDuplicates(false);
     $rules->addUser($user);
     NotificationsUtil::submit($message, $rules);
     $this->assertEquals(1, Yii::app()->emailHelper->getSentCount());
     $this->assertCount(1, Notification::getAll());
     NotificationsUtil::submit($message, $rules);
     $this->assertEquals(1, Yii::app()->emailHelper->getSentCount());
     $this->assertCount(1, Notification::getAll());
     $rules->setAllowDuplicates(true);
     NotificationsUtil::submit($message, $rules);
     $this->assertEquals(2, Yii::app()->emailHelper->getSentCount());
     $this->assertCount(2, Notification::getAll());
 }
コード例 #3
0
 public function testTaskAddCommentWithExtraSubscribers()
 {
     $task = new Task();
     $task->name = 'Her Task';
     $task->owner = self::$sally;
     $task->requestedByUser = self::$katie;
     $notificationSubscriber = new NotificationSubscriber();
     $notificationSubscriber->person = self::$steve;
     $notificationSubscriber->hasReadLatest = false;
     $task->notificationSubscribers->add($notificationSubscriber);
     $this->assertEquals(0, Yii::app()->emailHelper->getQueuedCount());
     $this->assertEquals(0, Notification::getCount());
     $this->assertTrue($task->save());
     $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount());
     $this->assertEquals(1, Notification::getCount());
     EmailMessage::deleteAll();
     Notification::deleteAll();
     $taskId = $task->id;
     $task->forget();
     $task = Task::getById($taskId);
     $this->assertEquals(0, Yii::app()->emailHelper->getQueuedCount());
     $this->assertEquals(0, Notification::getCount());
     //Now add comment
     $comment = new Comment();
     $comment->description = 'some comment';
     $task->comments->add($comment);
     $this->assertTrue($task->save());
     $this->assertEquals(0, Yii::app()->emailHelper->getQueuedCount());
     $this->assertEquals(0, Notification::getCount());
     TasksNotificationUtil::submitTaskNotificationMessage($task, TasksNotificationUtil::TASK_NEW_COMMENT, self::$super, $comment);
     $this->assertEquals(3, Yii::app()->emailHelper->getQueuedCount());
     $this->assertEquals(3, Notification::getCount());
     $emailMessages = EmailMessage::getAllByFolderType(EmailFolder::TYPE_OUTBOX);
     $this->assertCount(3, $emailMessages);
     $this->assertTrue('*****@*****.**' == $emailMessages[0]->recipients[0]->toAddress || '*****@*****.**' == $emailMessages[1]->recipients[0]->toAddress || '*****@*****.**' == $emailMessages[2]->recipients[0]->toAddress);
     $this->assertTrue('*****@*****.**' == $emailMessages[0]->recipients[0]->toAddress || '*****@*****.**' == $emailMessages[1]->recipients[0]->toAddress || '*****@*****.**' == $emailMessages[2]->recipients[0]->toAddress);
     $this->assertTrue('*****@*****.**' == $emailMessages[0]->recipients[0]->toAddress || '*****@*****.**' == $emailMessages[1]->recipients[0]->toAddress || '*****@*****.**' == $emailMessages[2]->recipients[0]->toAddress);
 }
コード例 #4
0
 public function testTaskNotifications()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $userOwner = UserTestHelper::createBasicUserWithEmailAddress('TaskUserOwner');
     $userRequester = UserTestHelper::createBasicUserWithEmailAddress('TaskUserRequester');
     Notification::deleteAll();
     EmailMessage::deleteAll();
     $dueStamp = DateTimeUtil::convertTimestampToDbFormatDateTime(time() + 10000);
     $completedStamp = DateTimeUtil::convertTimestampToDbFormatDateTime(time() + 9000);
     $task = new Task();
     $task->name = 'Task for Notifications Test';
     $task->owner = $userOwner;
     $task->requestedByUser = $userRequester;
     $task->dueDateTime = $dueStamp;
     $task->completedDateTime = $completedStamp;
     $task->description = 'my test description';
     $task->status = Task::STATUS_NEW;
     $this->assertTrue($task->save());
     //New task notification owned by other
     $notifications = Notification::getAll();
     $emailMessages = EmailMessage::getAll();
     $this->assertCount(1, $notifications);
     $this->assertCount(1, $emailMessages);
     $this->assertContains("The task, 'Task for Notifications Test', is now owned by you.", $notifications[0]->notificationMessage->textContent);
     $this->assertContains("The task, 'Task for Notifications Test', is now owned by you.", $emailMessages[0]->content->textContent);
     //Deliver task notification
     $task->status = TASK::STATUS_AWAITING_ACCEPTANCE;
     $task->save();
     $notifications = Notification::getAll();
     $emailMessages = EmailMessage::getAll();
     $this->assertCount(2, $notifications);
     $this->assertCount(2, $emailMessages);
     $this->assertContains("The task you requested, 'Task for Notifications Test', has been finished. You can now choose to accept or reject the task.", $notifications[1]->notificationMessage->textContent);
     $this->assertContains("The task you requested, 'Task for Notifications Test', has been finished. You can now choose to accept or reject the task.", $emailMessages[1]->content->textContent);
     //Reject task notification
     $task->status = TASK::STATUS_REJECTED;
     $task->save();
     $notifications = Notification::getAll();
     $emailMessages = EmailMessage::getAll();
     $this->assertCount(3, $notifications);
     $this->assertCount(3, $emailMessages);
     $this->assertContains("The task, 'Task for Notifications Test', has been rejected by Clark Kent.", $notifications[2]->notificationMessage->textContent);
     $this->assertContains("The task, 'Task for Notifications Test', has been rejected by Clark Kent.", $emailMessages[2]->content->textContent);
     //Accept task notification
     $task->status = TASK::STATUS_COMPLETED;
     $task->save();
     $notifications = Notification::getAll();
     $emailMessages = EmailMessage::getAll();
     $this->assertCount(4, $notifications);
     $this->assertCount(4, $emailMessages);
     $this->assertContains("The task, 'Task for Notifications Test', was accepted by Clark Kent.", $notifications[3]->notificationMessage->textContent);
     $this->assertContains("The task, 'Task for Notifications Test', was accepted by Clark Kent.", $emailMessages[3]->content->textContent);
 }
コード例 #5
0
 public function testProjectNotifications()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $super->primaryEmail->emailAddress = '*****@*****.**';
     $super->save();
     Yii::app()->user->userModel = $super;
     $user = UserTestHelper::createBasicUser('ProjectUser');
     Notification::deleteAll();
     EmailMessage::deleteAll();
     $project = new Project();
     $project->name = 'Project For Notifications Test';
     $project->owner = $super;
     $project->description = 'Description';
     $this->assertTrue($project->save());
     //New project notification
     $notifications = Notification::getAll();
     $emailMessages = EmailMessage::getAll();
     $this->assertCount(1, $notifications);
     $this->assertCount(1, $emailMessages);
     $this->assertContains("The project, 'Project For Notifications Test', is now owned by you.", $notifications[0]->notificationMessage->textContent);
     $this->assertContains("The project, 'Project For Notifications Test', is now owned by you.", $emailMessages[0]->content->textContent);
     //Project archived notification
     $project->status = Project::STATUS_ARCHIVED;
     $this->assertTrue($project->save());
     $notifications = Notification::getAll();
     $emailMessages = EmailMessage::getAll();
     $this->assertCount(2, $notifications);
     $this->assertCount(2, $emailMessages);
     $this->assertContains("The project, 'Project For Notifications Test', is now archived.", $notifications[1]->notificationMessage->textContent);
     $this->assertContains("The project, 'Project For Notifications Test', is now archived.", $emailMessages[1]->content->textContent);
 }
コード例 #6
0
 /**
  * @depends testAjaxChangeStatus
  */
 public function testSendNotificationInNewComment()
 {
     $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $missions = Mission::getAll();
     $this->assertEquals(1, count($missions));
     $mission = $missions[0];
     $this->assertEquals(0, $mission->comments->count());
     EmailMessage::deleteAll();
     Notification::deleteAll();
     $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')));
     $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);
     $notifications = Notification::getAll();
     $notification = $notifications[$messageCount];
     $this->assertCount(1, $notifications);
     $this->assertEquals('Mission new comment', strval($notification));
     $this->assertContains(strval($mission->comments[0]), $notification->notificationMessage->htmlContent);
     $this->assertContains(strval($mission->comments[0]), $notification->notificationMessage->textContent);
 }
 /**
  * Walkthrough test for synchronous download
  */
 public function testAsynchronousDownloadDefaultControllerActions()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     Project::deleteAll();
     $projects = array();
     for ($i = 0; $i <= ExportModule::$asynchronousThreshold + 1; $i++) {
         $projects[] = ProjectTestHelper::createProjectByNameForOwner('superProject' . $i, $super);
     }
     Notification::deleteAll();
     NotificationMessage::deleteAll();
     $this->setGetArray(array('Project_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '1', 'selectedIds' => ''));
     $this->runControllerWithRedirectExceptionAndGetUrl('projects/default/export');
     // Start background job
     $job = new ExportJob();
     $this->assertTrue($job->run());
     $exportItems = ExportItem::getAll();
     $this->assertEquals(1, count($exportItems));
     $fileModel = $exportItems[0]->exportFileModel;
     $this->assertEquals(1, $exportItems[0]->isCompleted);
     $this->assertEquals('csv', $exportItems[0]->exportFileType);
     $this->assertEquals('projects', $exportItems[0]->exportFileName);
     $this->assertTrue($fileModel instanceof ExportFileModel);
     $this->assertEquals(1, Notification::getCount());
     $this->assertEquals(1, NotificationMessage::getCount());
     // Check export job, when many ids are selected.
     // This will probably never happen, but we need test for this case too.
     $notificationsBeforeCount = Notification::getCount();
     $notificationMessagesBeforeCount = NotificationMessage::getCount();
     // Now test case when multiple ids are selected
     $exportItems = ExportItem::deleteAll();
     $selectedIds = "";
     foreach ($projects as $project) {
         $selectedIds .= $project->id . ",";
         // Not Coding Standard
     }
     $this->setGetArray(array('ProjectsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => ''), 'multiselect_ProjectsSearchForm_anyMixedAttributesScope' => 'All', 'Project_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '', 'selectedIds' => "{$selectedIds}"));
     $this->runControllerWithRedirectExceptionAndGetUrl('projects/default/export');
     // Start background job
     $job = new ExportJob();
     $this->assertTrue($job->run());
     $exportItems = ExportItem::getAll();
     $this->assertEquals(1, count($exportItems));
     $fileModel = $exportItems[0]->exportFileModel;
     $this->assertEquals(1, $exportItems[0]->isCompleted);
     $this->assertEquals('csv', $exportItems[0]->exportFileType);
     $this->assertEquals('projects', $exportItems[0]->exportFileName);
     $this->assertTrue($fileModel instanceof ExportFileModel);
     $this->assertEquals(2, Notification::getCount());
     $this->assertEquals(2, NotificationMessage::getCount());
 }