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;
 }
Exemple #3
0
 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;
 }