示例#1
0
 /**
  * @test
  */
 public function validatorConjunctionReturnsErrorsIfOneValidatorReturnsErrors()
 {
     $validatorConjunction = new \TYPO3\FLOW3\Validation\Validator\ConjunctionValidator(array());
     $validatorObject = $this->getMock('TYPO3\\FLOW3\\Validation\\Validator\\ValidatorInterface');
     $errors = new \TYPO3\FLOW3\Error\Result();
     $errors->addError(new \TYPO3\FLOW3\Error\Error('Error', 123));
     $validatorObject->expects($this->any())->method('validate')->will($this->returnValue($errors));
     $validatorConjunction->addValidator($validatorObject);
     $this->assertTrue($validatorConjunction->validate('some subject')->hasErrors());
 }
示例#2
0
 /**
  * @test
  */
 public function validateReturnsAllErrorsIfAllValidatorsReturnErrrors()
 {
     $validatorDisjunction = new \TYPO3\FLOW3\Validation\Validator\DisjunctionValidator(array());
     $error1 = new \TYPO3\FLOW3\Error\Error('Error', 123);
     $error2 = new \TYPO3\FLOW3\Error\Error('Error2', 123);
     $errors1 = new \TYPO3\FLOW3\Error\Result();
     $errors1->addError($error1);
     $validatorObject = $this->getMock('TYPO3\\FLOW3\\Validation\\Validator\\ValidatorInterface');
     $validatorObject->expects($this->any())->method('validate')->will($this->returnValue($errors1));
     $errors2 = new \TYPO3\FLOW3\Error\Result();
     $errors2->addError($error2);
     $secondValidatorObject = $this->getMock('TYPO3\\FLOW3\\Validation\\Validator\\ValidatorInterface');
     $secondValidatorObject->expects($this->any())->method('validate')->will($this->returnValue($errors2));
     $validatorDisjunction->addValidator($validatorObject);
     $validatorDisjunction->addValidator($secondValidatorObject);
     $this->assertEquals(array($error1, $error2), $validatorDisjunction->validate('some subject')->getErrors());
 }
示例#3
0
 /**
  * @test
  */
 public function mergeShouldMergeTwoResults()
 {
     $notice1 = $this->getMockMessage('Notice');
     $notice2 = $this->getMockMessage('Notice');
     $notice3 = $this->getMockMessage('Notice');
     $warning1 = $this->getMockMessage('Warning');
     $warning2 = $this->getMockMessage('Warning');
     $warning3 = $this->getMockMessage('Warning');
     $error1 = $this->getMockMessage('Error');
     $error2 = $this->getMockMessage('Error');
     $error3 = $this->getMockMessage('Error');
     $otherResult = new \TYPO3\FLOW3\Error\Result();
     $otherResult->addNotice($notice1);
     $otherResult->forProperty('foo.bar')->addNotice($notice2);
     $this->result->forProperty('foo')->addNotice($notice3);
     $otherResult->addWarning($warning1);
     $this->result->addWarning($warning2);
     $this->result->addWarning($warning3);
     $otherResult->forProperty('foo')->addError($error1);
     $otherResult->forProperty('foo')->addError($error2);
     $otherResult->addError($error3);
     $this->result->merge($otherResult);
     $this->assertSame(array($notice1), $this->result->getNotices(), 'Notices are not merged correctly without recursion');
     $this->assertSame(array($notice3), $this->result->forProperty('foo')->getNotices(), 'Original sub-notices are overridden.');
     $this->assertSame(array($notice2), $this->result->forProperty('foo')->forProperty('bar')->getNotices(), 'Sub-notices are not copied.');
     $this->assertSame(array($warning2, $warning3, $warning1), $this->result->getWarnings());
     $this->assertSame(array($error3), $this->result->getErrors());
     $this->assertSame(array($error1, $error2), $this->result->forProperty('foo')->getErrors());
 }
示例#4
0
 /**
  * @test
  */
 public function setValueShouldSetValidationErrorsIfValidatorIsSetAndValidationFailed()
 {
     $error = new \TYPO3\FLOW3\Error\Error('Some Error', 1234);
     $mockValidator = $this->getMock('TYPO3\\FLOW3\\Validation\\Validator\\ValidatorInterface');
     $validationMessages = new \TYPO3\FLOW3\Error\Result();
     $validationMessages->addError($error);
     $mockValidator->expects($this->once())->method('validate')->with('convertedValue')->will($this->returnValue($validationMessages));
     $this->simpleValueArgument->setValidator($mockValidator);
     $this->setupPropertyMapperAndSetValue();
     $this->assertFalse($this->simpleValueArgument->isValid());
     $this->assertEquals(array($error), $this->simpleValueArgument->getValidationResults()->getErrors());
 }
示例#5
0
 /**
  * Validate a null value with the given schema
  *
  * @param mixed $value
  * @param array $schema
  * @return \TYPO3\FLOW3\Error\Result
  */
 protected function validateNullType($value, array $schema)
 {
     $result = new \TYPO3\FLOW3\Error\Result();
     if ($value !== NULL) {
         $result->addError($this->createError('type=NULL', 'type=' . gettype($value)));
     }
     return $result;
 }
示例#6
0
 /**
  * @test
  */
 public function getValidationResultsShouldFetchAllValidationResltsFromArguments()
 {
     $error1 = new \TYPO3\FLOW3\Error\Error('Validation error', 1234);
     $error2 = new \TYPO3\FLOW3\Error\Error('Validation error 2', 1235);
     $results1 = new \TYPO3\FLOW3\Error\Result();
     $results1->addError($error1);
     $results2 = new \TYPO3\FLOW3\Error\Result();
     $results2->addError($error2);
     $argument1 = $this->getMock('TYPO3\\FLOW3\\Mvc\\Controller\\Argument', array('getValidationResults'), array('name1', 'string'));
     $argument1->expects($this->once())->method('getValidationResults')->will($this->returnValue($results1));
     $argument2 = $this->getMock('TYPO3\\FLOW3\\Mvc\\Controller\\Argument', array('getValidationResults'), array('name2', 'string'));
     $argument2->expects($this->once())->method('getValidationResults')->will($this->returnValue($results2));
     $arguments = new \TYPO3\FLOW3\Mvc\Controller\Arguments();
     $arguments->addArgument($argument1);
     $arguments->addArgument($argument2);
     $this->assertSame(array('name1' => array($error1), 'name2' => array($error2)), $arguments->getValidationResults()->getFlattenedErrors());
 }
 /**
  * @test
  */
 public function validateDetectsFailuresInRecursiveTargetsII()
 {
     $classNameA = 'A' . md5(uniqid(mt_rand(), TRUE));
     eval('class ' . $classNameA . '{ public $b; public $uuid = 0xF; }');
     $classNameB = 'B' . md5(uniqid(mt_rand(), TRUE));
     eval('class ' . $classNameB . '{ public $a; public $uuid = 0xF; }');
     $A = new $classNameA();
     $B = new $classNameB();
     $A->b = $B;
     $B->a = $A;
     $aValidator = $this->getValidator();
     $bValidator = $this->getValidator();
     $aValidator->addPropertyValidator('b', $bValidator);
     $bValidator->addPropertyValidator('a', $aValidator);
     $error1 = new \TYPO3\FLOW3\Error\Error('error1', 123);
     $result1 = new \TYPO3\FLOW3\Error\Result();
     $result1->addError($error1);
     $mockUuidValidator = $this->getMock('TYPO3\\FLOW3\\Validation\\Validator\\ValidatorInterface');
     $mockUuidValidator->expects($this->any())->method('validate')->with(0xf)->will($this->returnValue($result1));
     $aValidator->addPropertyValidator('uuid', $mockUuidValidator);
     $bValidator->addPropertyValidator('uuid', $mockUuidValidator);
     $this->assertSame(array('b.uuid' => array($error1), 'uuid' => array($error1)), $aValidator->validate($A)->getFlattenedErrors());
 }