Example #1
0
 /**
  * @param string $method
  *
  * @dataProvider methodsData
  */
 public function testProcessException($method)
 {
     $this->request->setMethod($method);
     $this->model->setFrom('*****@*****.**')->setTo(['*****@*****.**'])->setSubject('testSubject')->setBody('testBody');
     $this->form->expects($this->once())->method('setData')->with($this->model);
     $this->form->expects($this->once())->method('submit')->with($this->request);
     $this->form->expects($this->once())->method('isValid')->will($this->returnValue(true));
     $exception = new \Exception('TEST');
     $this->emailProcessor->expects($this->once())->method('process')->with($this->model)->will($this->returnCallback(function () use($exception) {
         throw $exception;
     }));
     $this->logger->expects($this->once())->method('error')->with('Email sending failed.', ['exception' => $exception]);
     $this->form->expects($this->once())->method('addError')->with($this->isInstanceOf('Symfony\\Component\\Form\\FormError'));
     $this->assertFalse($this->handler->process($this->model));
 }
 /**
  * @dataProvider supportedMethods
  */
 public function testProcessValidData($method)
 {
     $this->request->setMethod($method);
     $this->model->setFrom('*****@*****.**')->setTo(array('*****@*****.**'))->setSubject('testSubject')->setBody('testBody');
     $this->form->expects($this->once())->method('setData')->with($this->model);
     $this->form->expects($this->once())->method('submit')->with($this->request);
     $this->form->expects($this->once())->method('isValid')->will($this->returnValue(true));
     $message = new \Swift_Message();
     $this->mailer->expects($this->once())->method('createMessage')->will($this->returnValue($message));
     $this->mailer->expects($this->once())->method('send')->will($this->returnValue(1));
     $origin = new InternalEmailOrigin();
     $folder = new EmailFolder();
     $folder->setType(EmailFolder::SENT);
     $origin->addFolder($folder);
     $emailOriginRepo = $this->getMockBuilder('Doctrine\\ORM\\EntityRepository')->disableOriginalConstructor()->getMock();
     $emailOriginRepo->expects($this->once())->method('findOneBy')->with(array('name' => InternalEmailOrigin::BAP))->will($this->returnValue($origin));
     $this->em->expects($this->once())->method('getRepository')->with('OroEmailBundle:InternalEmailOrigin')->will($this->returnValue($emailOriginRepo));
     $this->emailEntityBuilder->expects($this->once())->method('setOrigin')->with($this->identicalTo($origin));
     $email = new EmailEntity();
     $this->emailEntityBuilder->expects($this->once())->method('email')->with('testSubject', '*****@*****.**', array('*****@*****.**'))->will($this->returnValue($email));
     $body = new EmailBody();
     $this->emailEntityBuilder->expects($this->once())->method('body')->with('testBody', false, true)->will($this->returnValue($body));
     $batch = $this->getMock('Oro\\Bundle\\EmailBundle\\Builder\\EmailEntityBatchInterface');
     $this->emailEntityBuilder->expects($this->once())->method('getBatch')->will($this->returnValue($batch));
     $batch->expects($this->once())->method('persist')->with($this->identicalTo($this->em));
     $this->em->expects($this->once())->method('flush');
     $this->assertTrue($this->handler->process($this->model));
     $this->assertNotNull($message);
     $this->assertEquals(array('*****@*****.**' => null), $message->getFrom());
     $this->assertEquals(array('*****@*****.**' => null), $message->getTo());
     $this->assertEquals('testSubject', $message->getSubject());
     $this->assertEquals('testBody', $message->getBody());
     $this->assertTrue($folder === $email->getFolder());
     $this->assertTrue($body === $email->getEmailBody());
 }
 /**
  * {@inheritdoc}
  */
 public function process(Email $model)
 {
     $issue_contexts = array_filter($model->getContexts(), function ($context) {
         return $context instanceof Issue;
     });
     /* @var $issue Issue */
     $issue = array_pop($issue_contexts);
     if ($this->request->getMethod() === 'GET') {
         $tos = $model->getTo();
         $tos[] = $issue->getReporter()->getEmail();
         $model->setTo($tos);
         $model->setSubject(sprintf('%s %s', $issue->getCode(), $issue->getSummary()));
     }
     parent::process($model);
 }