public function testSetEmailSeenChanges() { $emailUser = $this->getMock('Oro\\Bundle\\EmailBundle\\Entity\\EmailUser'); $emailUser->expects($this->once())->method('isSeen')->will($this->returnValue(false)); $emailUser->expects($this->once())->method('setSeen')->with(true); $this->em->expects($this->once())->method('flush'); $this->manager->setEmailUserSeen($emailUser); }
public function testToggleEmailUserSeen() { $threadArray = [new EmailUser()]; $emailUser = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\EmailUser')->setMethods(['getEmail', 'getThread', 'getId', 'setSeen', 'isSeen', 'getOwner'])->disableOriginalConstructor()->getMock(); $emailUser->expects($this->exactly(2))->method('getEmail')->will($this->returnSelf()); $emailUser->expects($this->exactly(2))->method('getThread')->will($this->returnSelf()); $emailUser->expects($this->once())->method('getId')->will($this->returnValue(1)); $emailUser->expects($this->once())->method('setSeen')->with(false); $emailUser->expects($this->exactly(2))->method('isSeen')->will($this->returnValue(true)); $emailUser->expects($this->exactly(2))->method('getOwner')->will($this->returnValue(true)); $this->em->expects($this->once())->method('flush'); $this->em->expects($this->exactly(2))->method('persist'); $this->queryBuilder->expects($this->once())->method('getQuery')->will($this->returnValue($this->queryBuilder)); $this->queryBuilder->expects($this->once())->method('getResult')->will($this->returnValue($threadArray)); $this->em->expects($this->once())->method('getRepository')->will($this->returnValue($this->em)); $this->em->expects($this->once())->method('getEmailUserByThreadId')->will($this->returnValue($this->queryBuilder)); $this->manager->toggleEmailUserSeen($emailUser); }
/** * @dataProvider dataSeenProvider * * @param bool $isSeen * @param int $setSeenCalls */ public function testMarkAllEmailsAsSeen($isSeen, $setSeenCalls) { $user = $this->getMockBuilder('Oro\\Bundle\\UserBundle\\Entity\\User')->disableOriginalConstructor()->getMock(); $organization = $this->getMockBuilder('Oro\\Bundle\\OrganizationBundle\\Entity\\Organization')->disableOriginalConstructor()->getMock(); $emailUser = $this->getMock('Oro\\Bundle\\EmailBundle\\Entity\\EmailUser'); $emailUser->expects($this->once())->method('isSeen')->will($this->returnValue($isSeen)); $emailUser->expects($this->exactly($setSeenCalls))->method('setSeen')->with(true); $this->em->expects($this->once())->method('flush'); $repository = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Repository\\EmailUserRepository')->setMethods(['createQueryBuilder', 'getQuery', 'getResult', 'findUnseenUserEmail'])->disableOriginalConstructor()->getMock(); $this->em->expects($this->once())->method('getRepository')->will($this->returnValue($repository)); $repository->expects($this->once())->method('findUnseenUserEmail')->will($this->returnValue($repository)); $repository->expects($this->once())->method('getQuery')->will($this->returnValue($repository)); $repository->expects($this->once())->method('getResult')->will($this->returnValue([$emailUser])); $this->manager->markAllEmailsAsSeen($user, $organization); }
public function testSetSeenStatus() { $user = new User(); $organization = new Organization(); $email = new Email(); $emailUsers = [new EmailUser(), new EmailUser(), new EmailUser()]; array_map(function (EmailUser $emailUser) use($email) { $emailUser->setEmail($email); $this->assertFalse($emailUser->isSeen()); }, $emailUsers); $this->securityFacade->expects($this->once())->method('getLoggedUser')->willReturn($user); $this->securityFacade->expects($this->once())->method('getOrganization')->willReturn($organization); $emailUsersRepo = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Repository\\EmailUserRepository')->disableOriginalConstructor()->getMock(); $emailUsersRepo->expects($this->once())->method('getAllEmailUsersByEmail')->with($email, $user, $organization, false)->willReturn($emailUsers); $this->em->expects($this->once())->method('getRepository')->with('OroEmailBundle:EmailUser')->willReturn($emailUsersRepo); $this->manager->setSeenStatus($email, true); array_map(function (EmailUser $emailUser) use($email) { $this->assertTrue($emailUser->isSeen()); }, $emailUsers); }
/** * @param array $options */ protected function handleThreadEmails($options) { $iteration = 0; $markType = $options['mark_type']; if (!$this->needToProcessThreadIds) { return; } $queryBuilder = $this->entityManager->getRepository('OroEmailBundle:EmailUser')->getEmailUserByThreadId($this->needToProcessThreadIds, $this->user); $result = $queryBuilder->getQuery()->iterate(); foreach ($result as $entity) { $entity = $entity[0]; if ($this->securityFacade->isGranted('EDIT', $entity)) { $this->emailManager->setEmailUserSeen($entity, $markType === self::MARK_READ); } $this->entityManager->persist($entity); if ($iteration % self::FLUSH_BATCH_SIZE === 0) { $this->entityManager->flush(); $this->entityManager->clear(); } $iteration++; } $this->entityManager->flush(); }