public function testGetActivityOwners() { $organization = new Organization(); $organization->setName('Org'); $user = new User(); $user->setUsername('test'); $emailUser = new EmailUser(); $emailUser->setOrganization($organization); $emailUser->setOwner($user); $owners = [$emailUser]; $emailMock = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\EmailUser')->setMethods(['getFromEmailAddress', 'hasOwner', 'getOwner', 'getOrganization', 'getActivityTargetEntities'])->disableOriginalConstructor()->getMock(); $emailMock->expects($this->once())->method('getFromEmailAddress')->willReturn($emailMock); $emailMock->expects($this->once())->method('getOwner')->willReturn($emailMock); $emailMock->expects($this->exactly(2))->method('getOrganization')->willReturn($organization); $emailMock->expects($this->exactly(1))->method('getActivityTargetEntities')->willReturn([]); $activityListMock = $this->getMockBuilder('Oro\\Bundle\\ActivityListBundle\\Entity\\ActivityList')->disableOriginalConstructor()->getMock(); $em = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock(); $repository = $this->getMockBuilder('Doctrine\\ORM\\EntityRepository')->disableOriginalConstructor()->getMock(); $this->doctrineRegistryLink->expects($this->once())->method('getService')->willReturn($em); $em->expects($this->once())->method('getRepository')->willReturn($repository); $repository->expects($this->once())->method('findBy')->willReturn($owners); $activityOwnerArray = $this->emailActivityListProvider->getActivityOwners($emailMock, $activityListMock); $this->assertCount(1, $activityOwnerArray); $owner = $activityOwnerArray[0]; $this->assertEquals($organization->getName(), $owner->getOrganization()->getName()); $this->assertEquals($user->getUsername(), $owner->getUser()->getUsername()); }
/** * Create EmailUser entity object * * @param string $subject The email subject * @param string $from The FROM email address, * for example: john@example.com or "John Smith" <john@example.c4m> * @param string|string[]|null $to The TO email address(es). * Example of email address see in description of $from parameter * @param \DateTime $sentAt The date/time when email sent * @param \DateTime $receivedAt The date/time when email received * @param \DateTime $internalDate The date/time an email server returned in INTERNALDATE field * @param integer $importance The email importance flag. * Can be one of *_IMPORTANCE constants of Email class * @param string|string[]|null $cc The CC email address(es). * Example of email address see in description of $from parameter * @param string|string[]|null $bcc The BCC email address(es). * Example of email address see in description of $from parameter * @param User|null $owner Owner of the email * @param OrganizationInterface|null $organization * * @return EmailUser * * @SuppressWarnings(ExcessiveParameterList) */ public function emailUser($subject, $from, $to, $sentAt, $receivedAt, $internalDate, $importance = Email::NORMAL_IMPORTANCE, $cc = null, $bcc = null, $owner = null, $organization = null) { $emailUser = new EmailUser(); $email = $this->email($subject, $from, $to, $sentAt, $internalDate, $importance, $cc, $bcc); $emailUser->setReceivedAt($receivedAt); $emailUser->setEmail($email); if ($owner !== null) { $emailUser->setOwner($owner); } if ($organization !== null) { $emailUser->setOrganization($organization); } elseif ($owner !== null) { $emailUser->setOrganization($owner->getOrganization()); } $this->batch->addEmailUser($emailUser); return $emailUser; }
public function testGetterSetter() { $emailUser = new EmailUser(); $email = new Email(); $owner = new User(); $organization = new Organization(); $folder = new EmailFolder(); $receivedAt = new DateTime('now'); $emailUser->setEmail($email); $emailUser->setOrganization($organization); $emailUser->addFolder($folder); $emailUser->setSeen(true); $emailUser->setOwner($owner); $emailUser->setReceivedAt($receivedAt); $this->assertEquals($email, $emailUser->getEmail()); $this->assertEquals($organization, $emailUser->getOrganization()); $this->assertEquals($folder, $emailUser->getFolders()->first()); $this->assertEquals(true, $emailUser->isSeen()); $this->assertEquals($owner, $emailUser->getOwner()); $this->assertEquals($receivedAt, $emailUser->getReceivedAt()); $this->assertNull($emailUser->getCreatedAt()); }
public function testFlush() { $changesetAnswer = ['seen' => true]; $user1 = new User(); $user1->setId(1); $user2 = new User(); $user2->setId(2); $emailUser1 = new EmailUser(); $emailUser1->setOwner($user1); $emailUser2 = new EmailUser(); $emailUser2->setOwner($user2); $emailUserArray = [$emailUser1, $emailUser2, $emailUser1]; $onFlushEventArgs = $this->getMockBuilder('Doctrine\\ORM\\Event\\OnFlushEventArgs')->setMethods(['getEntityManager', 'getUnitOfWork', 'getScheduledEntityInsertions', 'getScheduledEntityUpdates', 'getEntityChangeSet'])->disableOriginalConstructor()->getMock(); $onFlushEventArgs->expects($this->once())->method('getEntityManager')->will($this->returnValue($onFlushEventArgs)); $onFlushEventArgs->expects($this->once())->method('getUnitOfWork')->will($this->returnValue($onFlushEventArgs)); $onFlushEventArgs->expects($this->exactly(3))->method('getEntityChangeSet')->will($this->returnValue($changesetAnswer)); $onFlushEventArgs->expects($this->once())->method('getScheduledEntityInsertions')->will($this->returnValue($emailUserArray)); $onFlushEventArgs->expects($this->once())->method('getScheduledEntityUpdates')->will($this->returnValue($emailUserArray)); $this->processor->expects($this->exactly(1))->method('send')->with([$user1->getId() => ['entity' => $emailUser1, 'new' => 2], $user2->getId() => ['entity' => $emailUser2, 'new' => 1]]); $postFlushEventArgs = $this->getMockBuilder('Doctrine\\ORM\\Event\\PostFlushEventArgs')->disableOriginalConstructor()->getMock(); $this->listener->onFlush($onFlushEventArgs); $this->listener->postFlush($postFlushEventArgs); }
/** * @param Email $email * @param array $folders * * @return EmailUser[] */ protected function processFolders(Email $email, $folders) { $apiOrigin = $this->getEmailOrigin(); $emailUserList = []; foreach ($folders as $item) { $origin = $item['origin'] ?: $this->getEmailOrigin(); if ($origin->getId() && $origin->getId() !== $apiOrigin->getId()) { continue; } $folder = $origin->getFolder($item['type'], $item['fullName']); if (!$folder) { $folder = $this->emailEntityBuilder->folder($item['type'], $item['fullName'], $item['name']); $origin->addFolder($folder); } else { $this->emailEntityBuilder->setFolder($folder); } $emailUser = new EmailUser(); $emailUser->setEmail($email); $emailUser->setOwner($apiOrigin->getOwner()); $emailUser->setOrganization($apiOrigin->getOrganization()); $emailUser->setFolder($folder); $emailUserList[] = $emailUser; } return $emailUserList; }