/**
  * Ensures everything works as expected
  */
 public function testOk()
 {
     $message = new ImapMessageEntity();
     foreach ($this->input as $field => $value) {
         if ($field == 'attachments') {
             for ($i = 0, $len = count($value); $i < $len; $i++) {
                 $attData =& $value[$i];
                 $attachment = new \Conjoon\Data\Entity\Mail\DefaultAttachmentEntity();
                 $attachment->setKey($attData['key']);
                 $attachment->setFileName($attData['fileName']);
                 $attachment->setMimeType($attData['mimeType']);
                 $attachment->setEncoding($attData['encoding']);
                 $attachment->setContentId($attData['contentId']);
                 $mailAttachmentContent = new \Conjoon\Data\Entity\Mail\DefaultAttachmentContentEntity();
                 $mailAttachmentContent->setContent($attData['mailAttachmentContent']['content']);
                 $attachment->setAttachmentContent($mailAttachmentContent);
                 $message->addAttachment($attachment);
             }
             $this->assertSame(2, count($message->getAttachments()));
             for ($i = 0, $len = 2; $i < 2; $i++) {
                 $attachment = $message->getAttachments();
                 $attachment = $attachment[$i];
                 $attData =& $value[$i];
                 $this->assertSame($attData['key'], $attachment->getKey());
                 $this->assertSame($attData['fileName'], $attachment->getFileName());
                 $this->assertSame($attData['mimeType'], $attachment->getMimeType());
                 $this->assertSame($attData['encoding'], $attachment->getEncoding());
                 $this->assertSame($attData['contentId'], $attachment->getContentId());
                 $mailAttachmentContent = $attachment->getAttachmentContent();
                 $this->assertSame($attData['mailAttachmentContent']['content'], $mailAttachmentContent->getContent());
             }
             continue;
         }
         $methodSet = "set" . ucfirst($field);
         $methodGet = "get" . ucfirst($field);
         $message->{$methodSet}($value);
         $this->assertSame($value, $message->{$methodGet}());
     }
 }
 /**
  * @inheritdoc
  */
 public function createFrom(array $options)
 {
     $stringEmptyCheck = array('type' => 'string', 'allowEmpty' => true);
     $stringCheck = array('type' => 'string', 'allowEmpty' => false);
     try {
         ArgumentCheck::check(array('mimeType' => $stringEmptyCheck, 'encoding' => $stringEmptyCheck, 'fileName' => $stringCheck, 'content' => $stringEmptyCheck, 'contentId' => $stringEmptyCheck), $options);
         $attachmentEntity = new \Conjoon\Data\Entity\Mail\DefaultAttachmentEntity();
         $attachmentContent = new \Conjoon\Data\Entity\Mail\DefaultAttachmentContentEntity();
         $attachmentEntity->setMimeType($options['mimeType']);
         $attachmentEntity->setEncoding($options['encoding']);
         $attachmentEntity->setFileName($options['fileName']);
         $attachmentEntity->setContentId($options['contentId']);
         $attachmentEntity->setKey(md5($options['content']));
         $attachmentContent->setContent($options['content']);
         $attachmentEntity->setAttachmentContent($attachmentContent);
         return $attachmentEntity;
     } catch (\Exception $e) {
         throw new MailEntityCreatorException("Excpetion thrown by previous exception: " . $e->getMessage(), 0, $e);
     }
 }
 /**
  * Ensures everything works as expected.
  */
 public function testAddNoRegister()
 {
     $repository = $this->_entityManager->getRepository('\\Conjoon\\Data\\Entity\\Mail\\DefaultAttachmentContentEntity');
     $attachmentContent = new \Conjoon\Data\Entity\Mail\DefaultAttachmentContentEntity();
     $attachmentContent->setContent('BLOB3');
     $repository->flush();
     $queryTable = $this->getConnection()->createQueryTable('mail_attachment_content', 'SELECT * FROM mail_attachment_content');
     $expectedTable = $this->createXmlDataSet(dirname(__FILE__) . '/fixtures/mysql/message.xml')->getTable("mail_attachment_content");
     $this->assertTablesEqual($expectedTable, $queryTable);
 }
 /**
  * Ensures everything works as expected.
  */
 public function testPersistCreateUsingMessageByFind()
 {
     $messageRepository = $this->_entityManager->getRepository('\\Conjoon\\Data\\Entity\\Mail\\DefaultMessageEntity');
     $repository = $this->_entityManager->getRepository('\\Conjoon\\Data\\Entity\\Mail\\DefaultAttachmentEntity');
     $message = $messageRepository->findById(1);
     $attachment = new \Conjoon\Data\Entity\Mail\DefaultAttachmentEntity();
     $attachmentContent = new \Conjoon\Data\Entity\Mail\DefaultAttachmentContentEntity();
     $attachmentContent->setContent('BLOB3');
     $attachment->setKey('key3');
     $attachment->setMimeType('mimetype');
     $attachment->setFileName('filename');
     $attachment->setEncoding('encoding');
     $attachment->setContentId('contentid');
     $attachment->setAttachmentContent($attachmentContent);
     $message->addAttachment($attachment);
     $messageRepository->register($message);
     $this->assertEquals(2, $this->getConnection()->getRowCount('groupware_email_items_attachments'), "Pre-Condition");
     $messageRepository->flush();
     $this->assertEquals(3, $this->getConnection()->getRowCount('groupware_email_items_attachments'), "Pre-Condition");
     $queryTable = $this->getConnection()->createQueryTable('groupware_email_items_attachments', 'SELECT * FROM groupware_email_items_attachments');
     $expectedTable = $this->createXmlDataSet(dirname(__FILE__) . '/fixtures/mysql/attachment.addbyfind.result.xml')->getTable("groupware_email_items_attachments");
     $this->assertTablesEqual($expectedTable, $queryTable);
     $queryTable = $this->getConnection()->createQueryTable('mail_attachment_content', 'SELECT * FROM mail_attachment_content');
     $expectedTable = $this->createXmlDataSet(dirname(__FILE__) . '/fixtures/mysql/attachment.add.result.xml')->getTable("mail_attachment_content");
     $this->assertTablesEqual($expectedTable, $queryTable);
 }