/** * Create thread if need for queued emails * * @param EntityManager $entityManager */ protected function processThreadCreate(EntityManager $entityManager) { foreach ($this->getQueueThreadUpdate() as $entity) { $thread = $this->emailThreadProvider->getEmailThread($entityManager, $entity); if ($thread) { $entityManager->persist($thread); $entity->setThread($thread); } $this->updateRefs($entityManager, $entity); } }
/** * @param Email[] $newEmails */ public function updateThreads(array $newEmails) { foreach ($newEmails as $entity) { $thread = $this->emailThreadProvider->getEmailThread($this->em, $entity); if ($thread) { $this->em->persist($thread); $entity->setThread($thread); } $this->updateRefs($this->em, $entity); } }
public function testGetEmailThreadIdGenerated() { $email = $this->getMock('Oro\\Bundle\\EmailBundle\\Entity\\Email'); $email->expects($this->exactly(1))->method('getRefs')->will($this->returnValue(['testMessageId'])); $entityManager = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock(); $repository = $this->getMockBuilder('Doctrine\\ORM\\EntityRepository')->disableOriginalConstructor()->getMock(); $queryBuilder = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->getMock(); $query = $this->getMockBuilder('Doctrine\\ORM\\AbstractQuery')->disableOriginalConstructor()->setMethods(['getResult'])->getMockForAbstractClass(); $emailFromTread = $this->getMock('Oro\\Bundle\\EmailBundle\\Entity\\Email'); $query->expects($this->exactly(1))->method('getResult')->will($this->returnValue([$emailFromTread])); $queryBuilder->expects($this->exactly(1))->method('getQuery')->will($this->returnValue($query)); $repository->expects($this->exactly(1))->method('createQueryBuilder')->with('e')->willReturn($queryBuilder); $entityManager->expects($this->exactly(1))->method('getRepository')->with('OroEmailBundle:Email')->will($this->returnValue($repository)); $this->assertNotEmpty($this->provider->getEmailThread($entityManager, $email)); }