public function testCreateAndGetters() { $fromUser = \Mockery::mock('\\Mentoring\\User\\User'); $toUser = \Mockery::mock('\\Mentoring\\User\\User'); $subject = 'My subject'; $opening_message = \Mockery::mock('\\Mentoring\\Conversation\\Message'); $opening_message->shouldReceive('getCreatedAt')->andReturn($started_at = new \DateTime()); $conversation = new Conversation($fromUser, $toUser, $subject, $opening_message); $this->assertSame($fromUser, $conversation->getFromUser()); $this->assertSame($toUser, $conversation->getToUser()); $this->assertSame($subject, $conversation->getSubject()); $this->assertSame($started_at, $conversation->getStartedAt()); $this->assertSame($opening_message, $conversation->getFirstMessage()); }
/** * @param Conversation $conversation */ public function save(Conversation $conversation) { $convo_data = ['id' => $conversation->getId(), 'from_user_id' => $conversation->getFromUser()->getId(), 'to_user_id' => $conversation->getToUser()->getId(), 'subject' => $conversation->getSubject(), 'started_at' => $conversation->getStartedAt()->format(\DateTime::ISO8601)]; if ($convo_data['id']) { $this->dbal->update('conversations', $convo_data, ['id' => $convo_data['id']]); } else { $this->dbal->insert('conversations', $convo_data); $conversation->setId($this->dbal->lastInsertId()); } foreach ($conversation->getAllMessages() as $message) { $message_data = ['id' => $message->getId(), 'conversation_id' => $conversation->getId(), 'from_user_id' => $message->getFromUser()->getId(), 'is_read' => $message->isRead() ? 1 : 0, 'body' => $message->getBody(), 'created_at' => $message->getCreatedAt()->format(\DateTime::ISO8601)]; if ($message_data['id']) { $this->dbal->update('messages', $message_data, ['id' => $message_data['id']]); } else { $this->dbal->insert('messages', $message_data); $message->setId($this->dbal->lastInsertId()); } } }