/** * @param FormEvent $event * * @throws FormException */ public function initAttachmentEntity(FormEvent $event) { /** @var AttachmentModel $attachment */ $attachment = $event->getData(); // this check is necessary due to inability to capture file input dialog cancel event if (!$attachment) { return; } if (!$attachment->getEmailAttachment()) { switch ($attachment->getType()) { case AttachmentModel::TYPE_ATTACHMENT: $repo = $this->em->getRepository('OroAttachmentBundle:Attachment'); $oroAttachment = $repo->find($attachment->getId()); $emailAttachment = $this->emailAttachmentTransformer->oroToEntity($oroAttachment); break; case AttachmentModel::TYPE_EMAIL_ATTACHMENT: $repo = $this->em->getRepository('OroEmailBundle:EmailAttachment'); $emailAttachment = $repo->find($attachment->getId()); break; case AttachmentModel::TYPE_UPLOADED: $emailAttachment = $this->emailAttachmentTransformer->entityFromUploadedFile($attachment->getFile()); break; default: throw new FormException(sprintf('Invalid attachment type: %s', $attachment->getType())); } $attachment->setEmailAttachment($emailAttachment); } $event->setData($attachment); }
public function testOroToEntity() { $attachmentOro = $this->getMock('Oro\\Bundle\\AttachmentBundle\\Entity\\Attachment'); $file = $this->getMock('Oro\\Bundle\\AttachmentBundle\\Entity\\File'); $file->expects($this->once())->method('getOriginalFilename')->willReturn('filename.txt'); $file->expects($this->exactly(2))->method('getFilename')->willReturn('filename'); $file->expects($this->once())->method('getMimeType')->willReturn('text/plain'); $attachmentOro->expects($this->exactly(5))->method('getFile')->willReturn($file); $fileContent = $this->getMockBuilder('Gaufrette\\File')->disableOriginalConstructor()->getMock(); $fileContent->expects($this->once())->method('getContent')->willReturn('content'); $this->filesystem->expects($this->once())->method('get')->with('filename')->willReturn($fileContent); $attachmentEntity = $this->emailAttachmentTransformer->oroToEntity($attachmentOro); $this->assertInstanceOf('Oro\\Bundle\\EmailBundle\\Entity\\EmailAttachment', $attachmentEntity); $this->assertEquals($attachmentEntity->getId(), null); $this->assertInstanceOf('Oro\\Bundle\\EmailBundle\\Entity\\EmailAttachmentContent', $attachmentEntity->getContent()); $this->assertEquals(base64_encode('content'), $attachmentEntity->getContent()->getContent()); $this->assertEquals('base64', $attachmentEntity->getContent()->getContentTransferEncoding()); $this->assertEquals($attachmentEntity, $attachmentEntity->getContent()->getEmailAttachment()); $this->assertEquals('text/plain', $attachmentEntity->getContentType()); $this->assertEquals('filename.txt', $attachmentEntity->getFileName()); }