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); }