/** * @dataProvider findEmailOriginDataProvider * * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $mailModelExpects * @param string $emailOwner * @param bool $enableUseUserEmailOrigin * @param bool $isOriginsNotEmpty * @param \PHPUnit_Framework_MockObject_MockObject $origin * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $emailOriginsTimes */ public function testFindEmailOrigin($mailModelExpects, $emailOwner, $enableUseUserEmailOrigin, $isOriginsNotEmpty, \PHPUnit_Framework_MockObject_MockObject $origin, $emailOriginsTimes) { $organization = $this->getMock('Oro\\Bundle\\OrganizationBundle\\Entity\\OrganizationInterface'); $collection = new ArrayCollection([$origin]); $originName = 'origin name'; $campaignOwner = null; $origin->expects(self::once())->method('getOrganization')->willReturn($organization); if (true === $enableUseUserEmailOrigin && true === $isOriginsNotEmpty) { $origin->expects(self::once())->method('isActive')->willReturn($isOriginsNotEmpty); $origin->expects(self::once())->method('isSmtpConfigured')->willReturn($isOriginsNotEmpty); } if ('user' === $emailOwner) { $emailOwner = $this->getMockBuilder('Oro\\Bundle\\UserBundle\\Entity\\User')->setMethods(['getEmailOrigins', 'addEmailOrigin'])->disableOriginalConstructor()->getMock(); $emailOwner->expects($emailOriginsTimes)->method('getEmailOrigins')->willReturn($collection); if (false === $enableUseUserEmailOrigin) { $emailOwner->expects(self::once())->method('addEmailOrigin'); } } elseif ('emailBox' === $emailOwner) { $emailOwner = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Mailbox')->setMethods(['getOrigin'])->disableOriginalConstructor()->getMock(); if (true === $isOriginsNotEmpty) { $emailOwner->expects($emailOriginsTimes)->method('getOrigin')->willReturn($collection); } else { $emailOwner->expects($emailOriginsTimes)->method('getOrigin')->willReturn(null); $campaignOwner = $this->getMockBuilder('Oro\\Bundle\\UserBundle\\Entity\\User')->setMethods(['getEmailOrigins', 'addEmailOrigin'])->disableOriginalConstructor()->getMock(); $campaignOwner->expects(self::any())->method('getEmailOrigins')->willReturn($collection); } } $this->emailModel->expects($mailModelExpects)->method('getCampaignOwner')->willReturn($campaignOwner); $this->emailOriginHelper->setEmailModel($this->emailModel); $origin = $this->emailOriginHelper->findEmailOrigin($emailOwner, $organization, $originName, $enableUseUserEmailOrigin); self::assertNotNull($origin); }
/** * Find existing email origin entity by email string or create and persist new one. * * @param string $email * @param OrganizationInterface $organization * @param string $originName * @param boolean $enableUseUserEmailOrigin * * @return EmailOrigin */ public function getEmailOrigin($email, OrganizationInterface $organization = null, $originName = InternalEmailOrigin::BAP, $enableUseUserEmailOrigin = true) { $originKey = $originName . $email; if (!$organization && $this->securityFacade !== null && $this->securityFacade->getOrganization()) { $organization = $this->securityFacade->getOrganization(); } if (!array_key_exists($originKey, $this->origins)) { $emailOwner = $this->emailOwnerProvider->findEmailOwner($this->getEntityManager(), $this->emailAddressHelper->extractPureEmailAddress($email)); $origin = $this->emailOriginHelper->findEmailOrigin($emailOwner, $organization, $originName, $enableUseUserEmailOrigin); $this->origins[$originKey] = $origin; } return $this->origins[$originKey]; }