/** * @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)); } }