Вход Регистрация
Файл: 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(trueGuess::HIGH_CONFIDENCE)),
            array(new 
NotBlank(), new ValueGuess(trueGuess::HIGH_CONFIDENCE)),
            array(new 
True(), new ValueGuess(trueGuess::HIGH_CONFIDENCE)),
            array(new 
Length(10), new ValueGuess(falseGuess::LOW_CONFIDENCE)),
            array(new 
Range(array('min' => 1'max' => 20)), new ValueGuess(falseGuess::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_CLASSself::TEST_PROPERTY));
    }

    public function 
testGuessRequiredReturnsFalseForUnmappedProperties()
    {
        
$this->assertEquals(new ValueGuess(falseGuess::LOW_CONFIDENCE), $this->guesser->guessRequired(self::TEST_CLASSself::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;
}
Онлайн: 0
Реклама