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