Файл: symfony-2.7/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorTypeGuesserTest.php
Строк: 195
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SymfonyComponentFormTestsExtensionValidator;
use SymfonyComponentFormExtensionValidatorValidatorTypeGuesser;
use SymfonyComponentFormGuessGuess;
use SymfonyComponentFormGuessValueGuess;
use SymfonyComponentValidatorConstraintsEmail;
use SymfonyComponentValidatorConstraintsLength;
use SymfonyComponentValidatorConstraintsNotBlank;
use SymfonyComponentValidatorConstraintsNotNull;
use SymfonyComponentValidatorConstraintsRange;
use SymfonyComponentValidatorConstraintsTrue;
use SymfonyComponentValidatorConstraintsType;
use SymfonyComponentValidatorMappingClassMetadata;
/**
* @author franek <franek@chicour.net>
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class ValidatorTypeGuesserTest extends PHPUnit_Framework_TestCase
{
const TEST_CLASS = 'SymfonyComponentFormTestsExtensionValidatorValidatorTypeGuesserTest_TestClass';
const TEST_PROPERTY = 'property';
/**
* @var ValidatorTypeGuesser
*/
private $guesser;
/**
* @var ClassMetadata
*/
private $metadata;
/**
* @var PHPUnit_Framework_MockObject_MockObject
*/
private $metadataFactory;
protected function setUp()
{
$this->metadata = new ClassMetadata(self::TEST_CLASS);
$this->metadataFactory = $this->getMock('SymfonyComponentValidatorMetadataFactoryInterface');
$this->metadataFactory->expects($this->any())
->method('getMetadataFor')
->with(self::TEST_CLASS)
->will($this->returnValue($this->metadata));
$this->guesser = new ValidatorTypeGuesser($this->metadataFactory);
}
public function guessRequiredProvider()
{
return array(
array(new NotNull(), new ValueGuess(true, Guess::HIGH_CONFIDENCE)),
array(new NotBlank(), new ValueGuess(true, Guess::HIGH_CONFIDENCE)),
array(new True(), new ValueGuess(true, Guess::HIGH_CONFIDENCE)),
array(new Length(10), new ValueGuess(false, Guess::LOW_CONFIDENCE)),
array(new Range(array('min' => 1, 'max' => 20)), new ValueGuess(false, Guess::LOW_CONFIDENCE)),
);
}
/**
* @dataProvider guessRequiredProvider
*/
public function testGuessRequired($constraint, $guess)
{
// add distracting constraint
$this->metadata->addPropertyConstraint(self::TEST_PROPERTY, new Email());
// add constraint under test
$this->metadata->addPropertyConstraint(self::TEST_PROPERTY, $constraint);
$this->assertEquals($guess, $this->guesser->guessRequired(self::TEST_CLASS, self::TEST_PROPERTY));
}
public function testGuessRequiredReturnsFalseForUnmappedProperties()
{
$this->assertEquals(new ValueGuess(false, Guess::LOW_CONFIDENCE), $this->guesser->guessRequired(self::TEST_CLASS, self::TEST_PROPERTY));
}
public function testGuessMaxLengthForConstraintWithMaxValue()
{
$constraint = new Length(array('max' => '2'));
$result = $this->guesser->guessMaxLengthForConstraint($constraint);
$this->assertInstanceOf('SymfonyComponentFormGuessValueGuess', $result);
$this->assertEquals(2, $result->getValue());
$this->assertEquals(Guess::HIGH_CONFIDENCE, $result->getConfidence());
}
public function testGuessMaxLengthForConstraintWithMinValue()
{
$constraint = new Length(array('min' => '2'));
$result = $this->guesser->guessMaxLengthForConstraint($constraint);
$this->assertNull($result);
}
public function maxLengthTypeProvider()
{
return array(
array('double'),
array('float'),
array('numeric'),
array('real'),
);
}
/**
* @dataProvider maxLengthTypeProvider
*/
public function testGuessMaxLengthForConstraintWithType($type)
{
$constraint = new Type($type);
$result = $this->guesser->guessMaxLengthForConstraint($constraint);
$this->assertInstanceOf('SymfonyComponentFormGuessValueGuess', $result);
$this->assertNull($result->getValue());
$this->assertEquals(Guess::MEDIUM_CONFIDENCE, $result->getConfidence());
}
}
class ValidatorTypeGuesserTest_TestClass
{
private $property;
}