/**
  * @test
  */
 public function collectionValidatorCallsCollectionElementValidatorWhenValidatingObjectStorages()
 {
     $entity = new \TYPO3\CMS\Extbase\Tests\Fixture\Entity('Foo');
     $elementType = '\\TYPO3\\CMS\\Extbase\\Tests\\Fixture\\Entity';
     $objectStorage = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
     $objectStorage->attach($entity);
     $aValidator = new \TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator(array());
     $aValidator->injectConfigurationManager($this->configurationManager);
     $this->mockValidatorResolver->expects($this->never())->method('createValidator');
     $this->mockValidatorResolver->expects($this->once())->method('getBaseValidatorConjunction')->with($elementType)->will($this->returnValue($aValidator));
     $this->validator->_set('options', array('elementType' => $elementType));
     $this->validator->validate($objectStorage);
 }
 /**
  * @test
  * @author Karsten Dambekalns <*****@*****.**>
  */
 public function validateCanHandleRecursiveTargetsWithoutEndlessLooping()
 {
     $classNameA = $this->getUniqueId('B');
     eval('class ' . $classNameA . '{ public $b; }');
     $classNameB = $this->getUniqueId('B');
     eval('class ' . $classNameB . '{ public $a; }');
     $A = new $classNameA();
     $B = new $classNameB();
     $A->b = $B;
     $B->a = $A;
     $aValidator = new \TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator(array());
     $bValidator = new \TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator(array());
     $aValidator->injectConfigurationManager($this->configurationManager);
     $bValidator->injectConfigurationManager($this->configurationManager);
     $aValidator->addPropertyValidator('b', $bValidator);
     $bValidator->addPropertyValidator('a', $aValidator);
     $this->assertFalse($aValidator->validate($A)->hasErrors());
 }
 /**
  * @test
  * @author Karsten Dambekalns <*****@*****.**>
  */
 public function validateCanHandleRecursiveTargetsWithoutEndlessLooping()
 {
     $classNameA = 'B' . md5(uniqid(mt_rand(), TRUE));
     eval('class ' . $classNameA . '{ public $b; }');
     $classNameB = 'B' . md5(uniqid(mt_rand(), TRUE));
     eval('class ' . $classNameB . '{ public $a; }');
     $A = new $classNameA();
     $B = new $classNameB();
     $A->b = $B;
     $B->a = $A;
     $aValidator = new \TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator(array());
     $bValidator = new \TYPO3\CMS\Extbase\Validation\Validator\GenericObjectValidator(array());
     $aValidator->addPropertyValidator('b', $bValidator);
     $bValidator->addPropertyValidator('a', $aValidator);
     $this->assertFalse($aValidator->validate($A)->hasErrors());
 }