Skip to content

Commit

Permalink
BAP-13377: Change email compose form to choose origin instead from em…
Browse files Browse the repository at this point in the history
…ail (#8282)
mccar authored Mar 9, 2017
1 parent cd319db commit f766591
Showing 13 changed files with 504 additions and 35 deletions.
1 change: 0 additions & 1 deletion src/Oro/Bundle/EmailBundle/Builder/EmailModelBuilder.php
Original file line number Diff line number Diff line change
@@ -298,7 +298,6 @@ protected function initReplyAllFrom(EmailModel $emailModel, EmailEntity $parentE
protected function applyRequest(EmailModel $emailModel)
{
$this->applyEntityData($emailModel);
$this->applyFrom($emailModel);
$this->applySubject($emailModel);
$this->applyFrom($emailModel);
$this->applyRecipients($emailModel);
Original file line number Diff line number Diff line change
@@ -85,7 +85,7 @@ public function findAvailableMailboxEmails($user, Organization $organization = n
* @param User $user
* @param Organization $organization
*
* @return EmailOrigin
* @return EmailOrigin[]
*/
public function findAvailableOrigins(User $user, Organization $organization)
{
130 changes: 130 additions & 0 deletions src/Oro/Bundle/EmailBundle/Form/DataTransformer/OriginTransformer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
<?php

namespace Oro\Bundle\EmailBundle\Form\DataTransformer;

use Doctrine\ORM\EntityManager;

use Symfony\Component\Form\DataTransformerInterface;
use Symfony\Component\Form\Exception\UnexpectedTypeException;
use Symfony\Component\Form\Exception\TransformationFailedException;

use Oro\Bundle\EmailBundle\Entity\EmailOrigin;
use Oro\Bundle\EmailBundle\Tools\EmailOriginHelper;
use Oro\Bundle\SecurityBundle\SecurityFacade;

/**
* Transforms between entity and id
*/
class OriginTransformer implements DataTransformerInterface
{
/** @var EntityManager */
protected $em;

/** @var string */
protected $className;

/** @var SecurityFacade */
protected $securityFacade;

/** @var EmailOriginHelper */
protected $emailOriginHelper;

/**
* OriginTransformer constructor.
*
* @param EntityManager $em
* @param SecurityFacade $securityFacade
* @param EmailOriginHelper $emailOriginHelper
*
* @throws UnexpectedTypeException When $queryBuilderCallback is set and not callable
*/
public function __construct(
EntityManager $em,
SecurityFacade $securityFacade,
EmailOriginHelper $emailOriginHelper
) {
$this->em = $em;
$this->securityFacade = $securityFacade;
$this->emailOriginHelper = $emailOriginHelper;
$this->className = EmailOrigin::class;
}

/**
* {@inheritdoc}
*/
public function transform($value)
{
if (null === $value) {
return null;
}

if (!is_object($value)) {
throw new UnexpectedTypeException($value, 'object');
}

return $value->getId();
}

/**
* {@inheritdoc}
*/
public function reverseTransform($value)
{
if (!$value) {
return null;
}
$values = explode('|', $value);
if (!array_key_exists(0, $values) || !$values[0]) {
$origin = $this->findByOwner($this->securityFacade->getLoggedUser());

if (!$origin) {
$origin = $this->createInternalOrigin($values[1]);
}

return $origin;
}

return $this->loadEntityById($value);
}

/**
* Load entity by id
*
* @param mixed $id
* @return object
* @throws UnexpectedTypeException if query builder callback returns invalid type
* @throws TransformationFailedException if value not matched given $id
*/
protected function loadEntityById($id)
{
$repository = $this->em->getRepository($this->className);
$result = $repository->find($id);
if (!$result) {
throw new TransformationFailedException(sprintf('The value "%s" does not exist or not unique.', $id));
}

return $result;
}

/**
* @param $owner
*
* @return null|object
*/
protected function findByOwner($owner)
{
$repository = $this->em->getRepository($this->className);

return $repository->findOneBy(['owner'=> $owner]);
}

/**
* @param string $email
*
* @return EmailOrigin
*/
protected function createInternalOrigin($email)
{
return $this->emailOriginHelper->getEmailOrigin($email);
}
}
8 changes: 4 additions & 4 deletions src/Oro/Bundle/EmailBundle/Form/Handler/EmailHandler.php
Original file line number Diff line number Diff line change
@@ -4,6 +4,8 @@

use Psr\Log\LoggerInterface;

use Doctrine\Bundle\DoctrineBundle\Registry;

use Symfony\Component\Form\FormError;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\Request;
@@ -66,10 +68,8 @@ public function process(Email $model)

if ($this->form->isValid()) {
try {
$this->emailProcessor->process(
$model,
$this->emailProcessor->getEmailOrigin($model->getFrom(), $model->getOrganization())
);
$this->emailProcessor->process($model, $model->getOrigin());

return true;
} catch (\Exception $ex) {
$this->logger->error('Email sending failed.', ['exception' => $ex]);
37 changes: 37 additions & 0 deletions src/Oro/Bundle/EmailBundle/Form/Model/Email.php
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;

use Oro\Bundle\EmailBundle\Entity\EmailOrigin;
use Oro\Bundle\EmailBundle\Entity\EmailTemplate;
use Oro\Bundle\OrganizationBundle\Entity\Organization;
use Oro\Bundle\OrganizationBundle\Entity\OrganizationAwareInterface;
@@ -14,6 +15,7 @@
* Class Email
*
* @SuppressWarnings(PHPMD.TooManyFields)
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
*
* @package Oro\Bundle\EmailBundle\Form\Model
*/
@@ -38,6 +40,9 @@ class Email implements OrganizationAwareInterface
/** @var string */
protected $from;

/** @var EmailOrigin */
protected $origin;

/** @var string[] */
protected $to = [];

@@ -202,6 +207,14 @@ public function hasEntity()
*/
public function getFrom()
{
if (!$this->from && $this->getOrigin()) {
if ($this->getOrigin()->getMailbox()) {
$this->from = $this->getOrigin()->getMailbox()->getEmail();
} elseif ($this->getOrigin()->getOwner()) {
$this->from = $this->getOrigin()->getOwner()->getEmail();
}
}

return $this->from;
}

@@ -219,6 +232,30 @@ public function setFrom($from)
return $this;
}

/**
* Get email origin
*
* @return EmailOrigin
*/
public function getOrigin()
{
return $this->origin;
}

/**
* Set email origin
*
* @param EmailOrigin $origin
*
* @return $this
*/
public function setOrigin($origin)
{
$this->origin = $origin;

return $this;
}

/**
* Get TO email addresses
*
220 changes: 220 additions & 0 deletions src/Oro/Bundle/EmailBundle/Form/Type/EmailOriginFromType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
<?php

namespace Oro\Bundle\EmailBundle\Form\Type;

use Doctrine\Common\Util\ClassUtils;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

use Oro\Bundle\EmailBundle\Form\DataTransformer\OriginTransformer;
use Oro\Bundle\EmailBundle\Builder\Helper\EmailModelBuilderHelper;
use Oro\Bundle\EmailBundle\Tools\EmailOriginHelper;
use Oro\Bundle\EntityBundle\ORM\Registry;
use Oro\Bundle\EmailBundle\Provider\RelatedEmailsProvider;
use Oro\Bundle\ImapBundle\Entity\UserEmailOrigin;
use Oro\Bundle\SecurityBundle\SecurityFacade;
use Oro\Bundle\UserBundle\Entity\User;
use Oro\Bundle\EmailBundle\Entity\Manager\MailboxManager;

class EmailOriginFromType extends AbstractType
{
const NAME = 'oro_email_email_origin_from';

/** @var SecurityFacade */
protected $securityFacade;

/** @var EmailModelBuilderHelper */
protected $helper;

/** @var RelatedEmailsProvider */
protected $relatedEmailsProvider;

/** @var MailboxManager */
protected $mailboxManager;

/** @var Registry */
protected $registry;

/** @var EmailOriginHelper */
protected $emailOriginHelper;

/**
* @param SecurityFacade $securityFacade
* @param RelatedEmailsProvider $relatedEmailsProvider
* @param EmailModelBuilderHelper $helper
* @param MailboxManager $mailboxManager
* @param Registry $registry
* @param EmailOriginHelper $emailOriginHelper
*/
public function __construct(
SecurityFacade $securityFacade,
RelatedEmailsProvider $relatedEmailsProvider,
EmailModelBuilderHelper $helper,
MailboxManager $mailboxManager,
Registry $registry,
EmailOriginHelper $emailOriginHelper
) {
$this->securityFacade = $securityFacade;
$this->relatedEmailsProvider = $relatedEmailsProvider;
$this->helper = $helper;
$this->mailboxManager = $mailboxManager;
$this->registry = $registry;
$this->emailOriginHelper = $emailOriginHelper;
}

/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addModelTransformer(
new OriginTransformer(
$this->registry->getManager(),
$this->securityFacade,
$this->emailOriginHelper
)
);
}

/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$choices = $this->createChoices();
$resolver->setDefaults([
'choices' => $choices,
'read_only' => count($choices) === 1,
]);
}

/**
* @return array
*/
protected function createChoices()
{
$user = $this->securityFacade->getLoggedUser();
if (!$user instanceof User) {
return [];
}
$origins = [];
$origins = $this->fillUserOrigins($user, $origins);
if (count($origins) === 0) {
$origins = $this->fillUserEmails($user, $origins);
}
$origins = $this->fillMailboxOrigins($user, $origins);

return $origins;
}

/**
* {@inheritdoc}
*/
public function getParent()
{
return 'genemu_jqueryselect2_choice';
}

/**
* {@inheritdoc}
*/
public function getName()
{
return $this->getBlockPrefix();
}

/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return static::NAME;
}

/**
* @param User $user
* @param array $origins
*
* @return array
*/
protected function fillUserOrigins(User $user, $origins)
{
$userOrigins = $user->getEmailOrigins();
foreach ($userOrigins as $origin) {
if ($origin instanceof UserEmailOrigin) {
if ($origin->isActive()) {
$owner = $origin->getOwner();
$email = $origin->getOwner()->getEmail();
$this->helper->preciseFullEmailAddress($email, ClassUtils::getClass($owner), $owner->getId());
$origins[$origin->getId() . '|' . $origin->getOwner()->getEmail()] = $email;
}
}
}
return $origins;
}

/**
* @param User $user
* @param array $origins
* @return array
*/
protected function fillUserEmails(User $user, $origins)
{
$email = $user->getEmail();
$origins = $this->processFillUserEmail($email, $origins, $user);

$userEmails = $user->getEmails();
foreach ($userEmails as $email) {
$email = $email->getEmail();
$origins = $this->processFillUserEmail($email, $origins);
}

return $origins;
}

/**
* @param string $email
* @param array $origins
* @param $owner
*
* @return mixed
*/
protected function processFillUserEmail($email, $origins, $owner = null)
{
$key = '0|' . $email;
if (!array_key_exists($key, $origins)) {
if ($owner) {
$this->helper->preciseFullEmailAddress($email, ClassUtils::getClass($owner), $owner->getId());
} else {
$this->helper->preciseFullEmailAddress($email);
}
$origins[$key] = $email;
}

return $origins;
}

/**
* @param User $user
* @param array $origins
*
* @return mixed
*/
protected function fillMailboxOrigins(User $user, $origins)
{
$mailboxes = $this->mailboxManager->findAvailableMailboxes($user, $this->securityFacade->getOrganization());
foreach ($mailboxes as $mailbox) {
$origin = $mailbox->getOrigin();
if ($origin->isActive()) {
$email = $mailbox->getEmail();
$this->helper->preciseFullEmailAddress($email);
$email .= ' (Mailbox)';
$origins[$origin->getId() . '|' . $mailbox->getEmail()] = $email;
}
}

return $origins;
}
}
13 changes: 12 additions & 1 deletion src/Oro/Bundle/EmailBundle/Form/Type/EmailType.php
Original file line number Diff line number Diff line change
@@ -67,7 +67,11 @@ public function buildForm(FormBuilderInterface $builder, array $options)
->add('entityId', 'hidden', ['required' => false])
->add(
'from',
'oro_email_email_address_from',
'hidden'
)
->add(
'origin',
'oro_email_email_origin_from',
[
'required' => true,
'label' => 'oro.email.from_email_address.label',
@@ -180,6 +184,13 @@ public function initChoicesByEntityName(FormEvent $event)
return;
}

if (is_array($data) && isset($data['origin'])) {
$value = $data['origin'];
$values = explode('|', $value);
$data['from'] = $values[1];
$event->setData($data);
}

$entityClass = is_object($data) ? $data->getEntityClass() : $data['entityClass'];
$form = $event->getForm();

Original file line number Diff line number Diff line change
@@ -147,6 +147,7 @@ public function getEmails($object, $depth = 1, $ignoreAcl = false)
$recipients = $this->getRecipients($object, $depth, $ignoreAcl);

$emails = [];
/** @var Recipient $recipient */
foreach ($recipients as $recipient) {
$emails[$recipient->getEmail()] = $recipient->getId();
}
12 changes: 12 additions & 0 deletions src/Oro/Bundle/EmailBundle/Resources/config/form.yml
Original file line number Diff line number Diff line change
@@ -269,6 +269,18 @@ services:
tags:
- { name: form.type, alias: oro_email_email_address_from }

oro_email.form.type.email_origin_from:
class: 'Oro\Bundle\EmailBundle\Form\Type\EmailOriginFromType'
arguments:
- '@oro_security.security_facade'
- '@oro_email.related_emails.provider'
- '@oro_email.email.model.builder.helper'
- '@oro_email.mailbox.manager'
- '@doctrine'
- '@oro_email.tools.email_origin_helper'
tags:
- { name: form.type, alias: oro_email_email_origin_from }

oro_email.form.type.email_address_recipients:
class: %oro_email.form.type.email_address_recipients.class%
arguments:
3 changes: 0 additions & 3 deletions src/Oro/Bundle/EmailBundle/Resources/config/validation.yml
Original file line number Diff line number Diff line change
@@ -19,9 +19,6 @@ Oro\Bundle\EmailBundle\Form\Model\Email:
constraints:
- Oro\Bundle\EmailBundle\Validator\Constraints\EmailRecipients: ~
properties:
from:
- NotBlank: ~
- Oro\Bundle\EmailBundle\Validator\Constraints\EmailAddress: ~
to:
- Oro\Bundle\EmailBundle\Validator\Constraints\EmailAddress: ~
cc:
Original file line number Diff line number Diff line change
@@ -50,7 +50,7 @@
data-layout="separate"
>
{{ form_row(form.gridName) }}
{{ form_row(form.from) }}
{{ form_row(form.origin) }}
{{ form_row(form.to) }}
{{ form_row(form.cc) }}
{{ form_row(form.bcc) }}
Original file line number Diff line number Diff line change
@@ -248,8 +248,8 @@ public function createEmailModelProvider()
'helperDecodeClassNameCalls' => 0,
'emGetRepositoryCalls' => 0,
'helperPreciseFullEmailAddressCalls' => 0,
'helperGetUserCalls' => 2,
'helperBuildFullEmailAddress' => 2,
'helperGetUserCalls' => 1,
'helperBuildFullEmailAddress' => 1,
],
];
}
106 changes: 84 additions & 22 deletions src/Oro/Bundle/EmailBundle/Tests/Unit/Form/Type/EmailTypeTest.php
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
namespace Oro\Bundle\EmailBundle\Tests\Unit\Form\Type;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\EntityManager;

use Genemu\Bundle\FormBundle\Form\JQuery\Type\Select2Type;

@@ -13,22 +14,28 @@
use Symfony\Component\Security\Core\SecurityContextInterface;

use Oro\Bundle\ActivityBundle\Form\Type\ContextsSelectType;
use Oro\Bundle\EmailBundle\Builder\Helper\EmailModelBuilderHelper;
use Oro\Bundle\FormBundle\Form\Type\OroRichTextType;
use Oro\Bundle\FormBundle\Form\Type\OroResizeableRichTextType;
use Oro\Bundle\EntityBundle\ORM\Registry;
use Oro\Bundle\EmailBundle\Entity\EmailTemplate;
use Oro\Bundle\EmailBundle\Entity\Manager\MailboxManager;
use Oro\Bundle\EmailBundle\Form\Type\EmailType;
use Oro\Bundle\EmailBundle\Form\Model\Email;
use Oro\Bundle\EmailBundle\Form\Type\EmailAddressFromType;
use Oro\Bundle\EmailBundle\Form\Type\EmailAddressRecipientsType;
use Oro\Bundle\EmailBundle\Form\Type\EmailOriginFromType;
use Oro\Bundle\EmailBundle\Form\Type\EmailAddressType;
use Oro\Bundle\EmailBundle\Form\Type\EmailAttachmentsType;
use Oro\Bundle\EmailBundle\Form\Type\EmailTemplateSelectType;
use Oro\Bundle\EmailBundle\Form\Type\EmailType;
use Oro\Bundle\EmailBundle\Provider\EmailRenderer;
use Oro\Bundle\EntityBundle\Provider\EntityNameResolver;
use Oro\Bundle\FeatureToggleBundle\Checker\FeatureChecker;
use Oro\Bundle\FormBundle\Form\Type\OroResizeableRichTextType;
use Oro\Bundle\FormBundle\Form\Type\OroRichTextType;
use Oro\Bundle\EmailBundle\Tests\Unit\Fixtures\Entity\TestMailbox;
use Oro\Bundle\EmailBundle\Tools\EmailOriginHelper;
use Oro\Bundle\ImapBundle\Tests\Unit\Stub\TestUserEmailOrigin;
use Oro\Bundle\TranslationBundle\Form\Type\TranslatableEntityType;
use Oro\Bundle\UserBundle\Entity\User;
use Oro\Bundle\EmailBundle\Builder\Helper\EmailModelBuilderHelper;
use Oro\Bundle\EmailBundle\Form\Type\EmailAddressFromType;
use Oro\Bundle\EmailBundle\Form\Type\EmailAddressRecipientsType;
use Oro\Bundle\FeatureToggleBundle\Checker\FeatureChecker;

class EmailTypeTest extends TypeTestCase
{
@@ -52,6 +59,26 @@ class EmailTypeTest extends TypeTestCase
*/
protected $emailTemplate;

/**
* @var MailboxManager|\PHPUnit_Framework_MockObject_MockObject
*/
protected $mailboxManager;

/**
* @var Registry|\PHPUnit_Framework_MockObject_MockObject
*/
protected $registry;

/**
* @var EntityManager|\PHPUnit_Framework_MockObject_MockObject
*/
protected $em;

/**
* @var EmailOriginHelper|\PHPUnit_Framework_MockObject_MockObject
*/
protected $emailOriginHelper;

protected function setUp()
{
parent::setUp();
@@ -99,6 +126,9 @@ protected function getExtensions()
// ],
// TranslatableEntityType::NAME
// );
$this->mailboxManager = $this->getMockBuilder('Oro\Bundle\EmailBundle\Entity\Manager\MailboxManager')
->disableOriginalConstructor()
->getMock();

$user = new User();
$securityFacade = $this->getMockBuilder('Oro\Bundle\SecurityBundle\SecurityFacade')
@@ -116,22 +146,44 @@ protected function getExtensions()
->with($user)
->will($this->returnValue(['john@example.com' => 'John Smith <john@example.com>']));

$mailboxManager = $this->getMockBuilder('Oro\Bundle\EmailBundle\Entity\Manager\MailboxManager')
->disableOriginalConstructor()
->getMock();
$mailboxManager->expects($this->any())
$this->mailboxManager->expects($this->any())
->method('findAvailableMailboxEmails')
->will($this->returnValue([]));

$configManager = $this->getMockBuilder('Oro\Bundle\ConfigBundle\Config\ConfigManager')
->disableOriginalConstructor()
->getMock();

$this->registry = $this->getMockBuilder('Oro\Bundle\EntityBundle\ORM\Registry')
->disableOriginalConstructor()
->getMock();

$helper = $this->getMockBuilder('Oro\Bundle\EmailBundle\Builder\Helper\EmailModelBuilderHelper')
->disableOriginalConstructor()
->getMock();

$select2ChoiceType = new Select2Type(TranslatableEntityType::NAME);
$genemuChoiceType = new Select2Type('choice');
$emailTemplateList = new EmailTemplateSelectType();
$attachmentsType = new EmailAttachmentsType();
$emailAddressFromType = new EmailAddressFromType($securityFacade, $relatedEmailsProvider, $mailboxManager);

$this->emailOriginHelper = $this->getMockBuilder('Oro\Bundle\EmailBundle\Tools\EmailOriginHelper')
->disableOriginalConstructor()->getMock();

$emailOriginFromType = new EmailOriginFromType(
$securityFacade,
$relatedEmailsProvider,
$helper,
$this->mailboxManager,
$this->registry,
$this->emailOriginHelper
);

$emailAddressFromType = new EmailAddressFromType(
$securityFacade,
$relatedEmailsProvider,
$this->mailboxManager
);
$emailAddressRecipientsType = new EmailAddressRecipientsType($configManager);

$configManager = $this->getMockBuilder('Oro\Bundle\ConfigBundle\Config\ConfigManager')
@@ -143,23 +195,23 @@ protected function getExtensions()
->willReturn(['br', 'a']);
$richTextType = new OroRichTextType($configManager, $htmlTagProvider);
$resizableRichTextType = new OroResizeableRichTextType($configManager, $htmlTagProvider);
$em = $this->getMockBuilder('Doctrine\ORM\EntityManager')
$this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager')
->disableOriginalConstructor()
->getMock();
$metadata = $this->getMockBuilder('Doctrine\ORM\Mapping\ClassMetadataInfo')
->disableOriginalConstructor()
->getMock();
$metadata->expects($this->any())
->method('getName');
$em->expects($this->any())
$this->em->expects($this->any())
->method('getClassMetadata')
->willReturn($metadata);
$repo = $this->getMockBuilder('\Doctrine\ORM\EntityRepository')
->disableOriginalConstructor()
->getMock();
$repo->expects($this->any())
->method('find');
$em->expects($this->any())
$this->em->expects($this->any())
->method('getRepository')
->willReturn($repo);
$configManager = $this->getMockBuilder('Oro\Bundle\EntityConfigBundle\Config\ConfigManager')
@@ -168,9 +220,6 @@ protected function getExtensions()
$translator = $this->getMockBuilder('Symfony\Component\Translation\DataCollectorTranslator')
->disableOriginalConstructor()
->getMock();
$mapper = $this->getMockBuilder('Oro\Bundle\SearchBundle\Engine\ObjectMapper')
->disableOriginalConstructor()
->getMock();
$securityTokenStorage =
$this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')
->disableOriginalConstructor()
@@ -183,7 +232,7 @@ protected function getExtensions()
->getMock();

$contextsSelectType = new ContextsSelectType(
$em,
$this->em,
$configManager,
$translator,
$securityTokenStorage,
@@ -207,6 +256,7 @@ protected function getExtensions()
$genemuChoiceType->getName() => $genemuChoiceType,
$emailAddressFromType->getName() => $emailAddressFromType,
$emailAddressRecipientsType->getName() => $emailAddressRecipientsType,
$emailOriginFromType->getName() => $emailOriginFromType
],
[]
)
@@ -226,6 +276,19 @@ public function testSubmitValidData($formData, $to, $cc, $bcc)
if (isset($formData['body'])) {
$body = $formData['body'];
}

$user = new User();
$origin = new TestUserEmailOrigin(1);
$origin->setUser($user);

$mailBox = new TestMailbox(1);
$mailBox->setEmail('john@example.com');
$mailBox->setOrigin($origin);
$response = [$mailBox];

$this->mailboxManager->expects(self::once())->method('findAvailableMailboxes')->willReturn($response);
$this->registry->expects(self::once())->method('getManager')->willReturn($this->em);

$type = $this->createEmailType();
$form = $this->factory->create($type);

@@ -236,7 +299,6 @@ public function testSubmitValidData($formData, $to, $cc, $bcc)
$result = $form->getData();
$this->assertInstanceOf('Oro\Bundle\EmailBundle\Form\Model\Email', $result);
$this->assertEquals('test_grid', $result->getGridName());
$this->assertEquals($formData['from'], $result->getFrom());
$this->assertEquals($to, $result->getTo());
$this->assertEquals($cc, $result->getCc());
$this->assertEquals($bcc, $result->getBcc());
@@ -274,7 +336,7 @@ public function messageDataProvider()
[
[
'gridName' => 'test_grid',
'from' => 'John Smith <john@example.com>',
'origin'=>'1|john@example.com',
'to' => [
'John Smith 1 <john1@example.com>',
'"John Smith 2" <john2@example.com>',
@@ -292,7 +354,7 @@ public function messageDataProvider()
[
[
'gridName' => 'test_grid',
'from' => 'John Smith <john@example.com>',
'origin'=>'1|john@example.com',
'to' => [
'John Smith 1 <john1@example.com>',
'"John Smith 2" <john2@example.com>',

0 comments on commit f766591

Please sign in to comment.