public function testExtract()
 {
     $data = ['messageId' => 1, 'newsletterId' => 1, 'templateId' => 1, 'subject' => 'Test', 'params' => 'test=test', 'message' => '<h1>Message</h1>', 'sent' => 1, 'dateCreated' => '2016-02-19 18:12:21', 'dateSent' => '2016-02-19 18:12:21'];
     $object = new MessageModel();
     $object->setMessageId($data['messageId'])->setNewsletterId($data['newsletterId'])->setTemplateId($data['templateId'])->setSubject($data['subject'])->setParams($data['params'])->setMessage($data['message'])->setSent(true)->setDateCreated(new \DateTime($data['dateCreated']))->setDateSent(new \DateTime($data['dateSent']));
     $hydrator = new Message();
     $model = $hydrator->hydrate($data, new MessageModel());
     $this->assertEquals($object, $model);
     $this->assertSame($data, $hydrator->extract($model));
 }
 /**
  * @expectedException \UthandoCommon\UthandoException
  * @expectExceptionMessage Cannot send message out again.
  */
 public function testSendMessageWillNotSendAlreadySentMessage()
 {
     $messageModel = new MessageModel();
     $messageModel->setNewsletterId(1)->setSent(true);
     $subscriptions = [new Subscription()];
     $subscribers = [new Subscriber()];
     $messageMapperMock = $this->getMock('UthandoNewsletter\\Mapper\\Message');
     $messageMapperMock->expects($this->once())->method('getById')->willReturn($messageModel);
     $newsletterServiceMock = $this->getMock('UthandoNewsletter\\Service\\Newsletter');
     $newsletterServiceMock->expects($this->once())->method('getById')->willReturn(new NewsletterModel());
     $templateServiceMock = $this->getMock('UthandoNewsletter\\Service\\Template');
     $templateServiceMock->expects($this->once())->method('getById')->willReturn(new TemplateModel());
     $this->serviceManager->get('UthandoMapperManager')->setAllowOverride(true);
     $this->serviceManager->get('UthandoMapperManager')->setService('UthandoNewsletterMessage', $messageMapperMock);
     $this->serviceManager->get('UthandoServiceManager')->setAllowOverride(true);
     $this->serviceManager->get('UthandoServiceManager')->setService('UthandoNewsletter', $newsletterServiceMock);
     $this->serviceManager->get('UthandoServiceManager')->setService('UthandoNewsletterTemplate', $templateServiceMock);
     /* @var Message $service */
     $service = $this->serviceManager->get('UthandoServiceManager')->get('UthandoNewsletterMessage');
     $service->setUseCache(false);
     $result = $service->sendMessage(1);
 }
 /**
  * @param Template|Message $model
  * @return string
  */
 public function parseParams($model)
 {
     $iniReader = new Ini();
     $params = $iniReader->fromString($model->getParams());
     if ($model instanceof Message) {
         $params = array_merge(parse_ini_string($model->getTemplate()->getParams()), $params);
     }
     $this->setVariables($params);
 }
 /**
  * @param \UthandoNewsletter\Model\Message $object
  * @return array
  */
 public function extract($object)
 {
     return ['messageId' => $object->getMessageId(), 'newsletterId' => $object->getNewsletterId(), 'templateId' => $object->getTemplateId(), 'subject' => $object->getSubject(), 'params' => $object->getParams(), 'message' => $object->getMessage(), 'sent' => $this->extractValue('sent', $object->isSent()), 'dateCreated' => $this->extractValue('dateCreated', $object->getDateCreated()), 'dateSent' => $this->extractValue('dateSent', $object->getDateSent())];
 }
 public function testSetGetDateSent()
 {
     $this->model->setDateSent(new DateTime());
     $this->assertInstanceOf(DateTime::class, $this->model->getDateSent());
 }