/**
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testIsAtLeastOneKnownEmailAddressSequence()
 {
     $query1 = $this->getMockBuilder('Doctrine\\ORM\\AbstractQuery')->disableOriginalConstructor()->setMethods(array('getResult'))->getMockForAbstractClass();
     $queryBuilder1 = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->setMethods(array('select', 'where', 'setParameter', 'getQuery'))->getMock();
     $queryBuilder1->expects($this->at(0))->method('select')->with('a.email')->will($this->returnSelf());
     $queryBuilder1->expects($this->at(1))->method('where')->with('a.hasOwner = ?1 AND a.email IN (?2)')->will($this->returnSelf());
     $queryBuilder1->expects($this->at(2))->method('setParameter')->with(1, true)->will($this->returnSelf());
     $queryBuilder1->expects($this->at(3))->method('setParameter')->with(2, ['*****@*****.**' => '*****@*****.**', '*****@*****.**' => '*****@*****.**', '*****@*****.**' => '*****@*****.**', '*****@*****.**' => '*****@*****.**'])->will($this->returnSelf());
     $queryBuilder1->expects($this->at(4))->method('getQuery')->will($this->returnValue($query1));
     $query2 = $this->getMockBuilder('Doctrine\\ORM\\AbstractQuery')->disableOriginalConstructor()->setMethods(array('getResult'))->getMockForAbstractClass();
     $queryBuilder2 = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->setMethods(array('select', 'where', 'setParameter', 'getQuery'))->getMock();
     $queryBuilder2->expects($this->at(0))->method('select')->with('a.email')->will($this->returnSelf());
     $queryBuilder2->expects($this->at(1))->method('where')->with('a.hasOwner = ?1 AND a.email IN (?2)')->will($this->returnSelf());
     $queryBuilder2->expects($this->at(2))->method('setParameter')->with(1, true)->will($this->returnSelf());
     $queryBuilder2->expects($this->at(3))->method('setParameter')->with(2, ['*****@*****.**' => '*****@*****.**', '*****@*****.**' => '*****@*****.**'])->will($this->returnSelf());
     $queryBuilder2->expects($this->at(4))->method('getQuery')->will($this->returnValue($query2));
     $this->emailAddressRepository->expects($this->exactly(2))->method('createQueryBuilder')->will($this->onConsecutiveCalls($queryBuilder1, $queryBuilder2));
     $query1->expects($this->once())->method('getResult')->will($this->returnValue([['email' => '*****@*****.**'], ['email' => '*****@*****.**']]));
     $query2->expects($this->once())->method('getResult')->will($this->returnValue([['email' => '*****@*****.**']]));
     $this->assertTrue($this->checker->isAtLeastOneKnownEmailAddress('*****@*****.**', ['*****@*****.**', '*****@*****.**'], ['*****@*****.**', '*****@*****.**']));
     $this->assertTrue($this->checker->isAtLeastOneKnownEmailAddress('*****@*****.**'));
     $this->assertFalse($this->checker->isAtLeastOneKnownEmailAddress('*****@*****.**'));
     $this->assertTrue($this->checker->isAtLeastOneKnownEmailAddress('*****@*****.**', '*****@*****.**', '*****@*****.**'));
     $this->assertFalse($this->checker->isAtLeastOneKnownEmailAddress('*****@*****.**', '*****@*****.**'));
     $this->assertTrue($this->checker->isAtLeastOneKnownEmailAddress('*****@*****.**', '*****@*****.**', '*****@*****.**'));
 }
 /**
  * @dataProvider isAtLeastOneUserEmailAddressProvider
  */
 public function testIsAtLeastOneUserEmailAddress($emailAddress, $emailsToLoad, $queryResult, $expected)
 {
     $query = $this->getLoadEmailAddressesQuery($queryResult);
     $queryBuilder = $this->getLoadEmailAddressesQueryBuilder($query, $emailsToLoad);
     $queryBuilder->expects($this->never())->method('andWhere');
     $this->emailAddressRepository->expects($this->once())->method('createQueryBuilder')->with('a')->will($this->returnValue($queryBuilder));
     $this->checker->isAtLeastOneUserEmailAddress(1, $emailAddress);
     foreach ($expected as $email => $expectedResult) {
         $this->assertSame($expectedResult, $this->checker->isAtLeastOneUserEmailAddress(1, $email));
         // check that result is cached
         $this->assertSame($expectedResult, $this->checker->isAtLeastOneUserEmailAddress(1, $email));
         // check for other user
         $this->assertFalse($this->checker->isAtLeastOneUserEmailAddress(2, $email));
     }
 }