protected function createAndSaveNewConversationForUser(User $owner, User $participant)
 {
     foreach (Conversation::getAll() as $conversation) {
         $conversation->delete();
     }
     $conversation = new Conversation();
     $conversation->owner = $owner;
     $conversation->subject = 'My test conversation subject';
     $conversation->description = 'My test conversation description';
     $conversationParticipant = new ConversationParticipant();
     $conversationParticipant->person = $participant;
     $conversation->conversationParticipants->add($conversationParticipant);
     $this->assertTrue($conversation->save());
     return $conversation;
 }
 /**
  * @depends testGetUnreadConversationCount
  */
 public function testDeleteConversation()
 {
     $conversations = Conversation::getAll();
     $this->assertEquals(3, count($conversations));
     $comments = Comment::getAll();
     $this->assertEquals(4, count($comments));
     //check count of conversation_items
     $count = ZurmoRedBean::getRow('select count(*) count from conversation_item');
     $this->assertEquals(2, $count['count']);
     //remove the account, tests tthat ConversationObserver is correctly removing data from conversation_item
     $accounts = Account::getByName('anAccount2');
     $this->assertTrue($accounts[0]->delete());
     $count = ZurmoRedBean::getRow('select count(*) count from conversation_item');
     $this->assertEquals(1, $count['count']);
     foreach ($conversations as $conversation) {
         $conversationId = $conversation->id;
         $conversation->forget();
         $conversation = Conversation::getById($conversationId);
         $deleted = $conversation->delete();
         $this->assertTrue($deleted);
     }
     //Count of conversation items should be 0 since the ConversationsObserver should make sure it gets removed correctly.
     $count = ZurmoRedBean::getRow('select count(*) count from conversation_item');
     $this->assertEquals(0, $count['count']);
     //check that all comments are removed, since they are owned.
     $comments = Comment::getAll();
     $this->assertEquals(0, count($comments));
 }
 /**
  * @depends testClosingConversations
  */
 public function testSendEmailInNewComment()
 {
     if (!SECURITY_OPTIMIZED) {
         return;
     }
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $steven = User::getByUsername('steven');
     $sally = User::getByUsername('sally');
     $mary = User::getByUsername('mary');
     $conversations = Conversation::getAll();
     $this->assertEquals(2, count($conversations));
     $this->assertEquals(0, $conversations[0]->comments->count());
     foreach (EmailMessage::getAll() as $emailMessage) {
         $emailMessage->delete();
     }
     $initialQueued = 0;
     $conversation = $conversations[0];
     $conversationParticipant = new ConversationParticipant();
     $conversationParticipant->person = $steven;
     $conversation->conversationParticipants->add($conversationParticipant);
     $conversationParticipant = new ConversationParticipant();
     $conversationParticipant->person = $sally;
     $conversation->conversationParticipants->add($conversationParticipant);
     $conversationParticipant = new ConversationParticipant();
     $conversationParticipant->person = $mary;
     $conversation->conversationParticipants->add($conversationParticipant);
     $inboxAndEmailNotificationSettings = UserTestHelper::getDefaultNotificationSettingsValuesForTestUser();
     $inboxAndEmailNotificationSettings['enableConversationNewCommentNotification'] = array('inbox' => false, 'email' => false);
     UserNotificationUtil::setValue($mary, $inboxAndEmailNotificationSettings, 'inboxAndEmailNotificationSettings', false);
     //Save a new comment
     $this->setGetArray(array('relatedModelId' => $conversation->id, 'relatedModelClassName' => 'Conversation', 'relatedModelRelationName' => 'comments', 'redirectUrl' => 'someRedirect'));
     $this->setPostArray(array('Comment' => array('description' => 'a ValidComment Name')));
     $this->runControllerWithRedirectExceptionAndGetContent('comments/default/inlineCreateSave');
     $this->assertEquals(1, $conversation->comments->count());
     $this->assertEquals($initialQueued + 2, Yii::app()->emailHelper->getQueuedCount());
     $this->assertEquals(0, Yii::app()->emailHelper->getSentCount());
     $emailMessages = EmailMessage::getAll();
     $emailMessage = $emailMessages[$initialQueued];
     $this->assertEquals(1, count($emailMessage->recipients));
     $emailMessage = $emailMessages[$initialQueued + 1];
     $this->assertEquals(1, count($emailMessage->recipients));
     $this->assertContains('conversation', $emailMessage->subject);
     $this->assertContains(strval($conversation), $emailMessage->subject);
     $this->assertContains(strval($conversation->comments[0]), $emailMessage->content->htmlContent);
     $this->assertContains(strval($conversation->comments[0]), $emailMessage->content->textContent);
 }