if the repository method returns an array ensure that it's internal poin...

This commit is contained in:
Christian Flothmann 2013-05-02 17:25:58 +02:00 committed by Fabien Potencier
parent 030695752b
commit 0610750378
2 changed files with 27 additions and 0 deletions

View File

@ -294,6 +294,31 @@ class UniqueValidatorTest extends DoctrineOrmTestCase
$this->assertEquals(0, $violationsList->count(), 'Violation is using custom repository method.');
}
public function testValidateUniquenessWithUnrewoundArray()
{
$entity = new SingleIdentEntity(1, 'foo');
$entityManagerName = 'foo';
$repository = $this->createRepositoryMock();
$repository->expects($this->once())
->method('findByCustom')
->will(
$this->returnCallback(function() use ($entity) {
$returnValue = array(
$entity,
);
next($returnValue);
return $returnValue;
})
)
;
$em = $this->createEntityManagerMock($repository);
$validator = $this->createValidator($entityManagerName, $em, null, array(), null, 'findByCustom');
$violationsList = $validator->validate($entity);
$this->assertCount(0, $violationsList, 'Violation is using unrewound array as return value in the repository method.');
}
/**
* @group GH-1635
*/

View File

@ -108,6 +108,8 @@ class UniqueEntityValidator extends ConstraintValidator
*/
if ($result instanceof \Iterator) {
$result->rewind();
} elseif (is_array($result)) {
reset($result);
}
/* If no entity matched the query criteria or a single entity matched,