Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Validator/Tests/ConstraintTest.php
Строк: 334
<?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 SymfonyComponentValidatorTests;

use 
SymfonyComponentValidatorConstraint;
use 
SymfonyComponentValidatorTestsFixturesClassConstraint;
use 
SymfonyComponentValidatorTestsFixturesConstraintA;
use 
SymfonyComponentValidatorTestsFixturesConstraintB;
use 
SymfonyComponentValidatorTestsFixturesConstraintC;
use 
SymfonyComponentValidatorTestsFixturesConstraintWithValue;
use 
SymfonyComponentValidatorTestsFixturesConstraintWithValueAsDefault;

class 
ConstraintTest extends PHPUnit_Framework_TestCase
{
    public function 
testSetProperties()
    {
        
$constraint = new ConstraintA(array(
            
'property1' => 'foo',
            
'property2' => 'bar',
        ));

        
$this->assertEquals('foo'$constraint->property1);
        
$this->assertEquals('bar'$constraint->property2);
    }

    public function 
testSetNotExistingPropertyThrowsException()
    {
        
$this->setExpectedException('SymfonyComponentValidatorExceptionInvalidOptionsException');

        new 
ConstraintA(array(
            
'foo' => 'bar',
        ));
    }

    public function 
testMagicPropertiesAreNotAllowed()
    {
        
$constraint = new ConstraintA();

        
$this->setExpectedException('SymfonyComponentValidatorExceptionInvalidOptionsException');

        
$constraint->foo 'bar';
    }

    public function 
testInvalidAndRequiredOptionsPassed()
    {
        
$this->setExpectedException('SymfonyComponentValidatorExceptionInvalidOptionsException');

        new 
ConstraintC(array(
            
'option1' => 'default',
            
'foo' => 'bar',
        ));
    }

    public function 
testSetDefaultProperty()
    {
        
$constraint = new ConstraintA('foo');

        
$this->assertEquals('foo'$constraint->property2);
    }

    public function 
testSetDefaultPropertyDoctrineStyle()
    {
        
$constraint = new ConstraintA(array('value' => 'foo'));

        
$this->assertEquals('foo'$constraint->property2);
    }

    public function 
testSetDefaultPropertyDoctrineStylePlusOtherProperty()
    {
        
$constraint = new ConstraintA(array('value' => 'foo''property1' => 'bar'));

        
$this->assertEquals('foo'$constraint->property2);
        
$this->assertEquals('bar'$constraint->property1);
    }

    public function 
testSetDefaultPropertyDoctrineStyleWhenDefaultPropertyIsNamedValue()
    {
        
$constraint = new ConstraintWithValueAsDefault(array('value' => 'foo'));

        
$this->assertEquals('foo'$constraint->value);
        
$this->assertNull($constraint->property);
    }

    public function 
testDontSetDefaultPropertyIfValuePropertyExists()
    {
        
$constraint = new ConstraintWithValue(array('value' => 'foo'));

        
$this->assertEquals('foo'$constraint->value);
        
$this->assertNull($constraint->property);
    }

    public function 
testSetUndefinedDefaultProperty()
    {
        
$this->setExpectedException('SymfonyComponentValidatorExceptionConstraintDefinitionException');

        new 
ConstraintB('foo');
    }

    public function 
testRequiredOptionsMustBeDefined()
    {
        
$this->setExpectedException('SymfonyComponentValidatorExceptionMissingOptionsException');

        new 
ConstraintC();
    }

    public function 
testRequiredOptionsPassed()
    {
        new 
ConstraintC(array('option1' => 'default'));
    }

    public function 
testGroupsAreConvertedToArray()
    {
        
$constraint = new ConstraintA(array('groups' => 'Foo'));

        
$this->assertEquals(array('Foo'), $constraint->groups);
    }

    public function 
testAddDefaultGroupAddsGroup()
    {
        
$constraint = new ConstraintA(array('groups' => 'Default'));
        
$constraint->addImplicitGroupName('Foo');
        
$this->assertEquals(array('Default''Foo'), $constraint->groups);
    }

    public function 
testAllowsSettingZeroRequiredPropertyValue()
    {
        
$constraint = new ConstraintA(0);
        
$this->assertEquals(0$constraint->property2);
    }

    public function 
testCanCreateConstraintWithNoDefaultOptionAndEmptyArray()
    {
        new 
ConstraintB(array());
    }

    public function 
testGetTargetsCanBeString()
    {
        
$constraint = new ClassConstraint();

        
$this->assertEquals('class'$constraint->getTargets());
    }

    public function 
testGetTargetsCanBeArray()
    {
        
$constraint = new ConstraintA();

        
$this->assertEquals(array('property''class'), $constraint->getTargets());
    }

    public function 
testSerialize()
    {
        
$constraint = new ConstraintA(array(
            
'property1' => 'foo',
            
'property2' => 'bar',
        ));

        
$restoredConstraint unserialize(serialize($constraint));

        
$this->assertEquals($constraint$restoredConstraint);
    }

    public function 
testSerializeInitializesGroupsOptionToDefault()
    {
        
$constraint = new ConstraintA(array(
            
'property1' => 'foo',
            
'property2' => 'bar',
        ));

        
$constraint unserialize(serialize($constraint));

        
$expected = new ConstraintA(array(
            
'property1' => 'foo',
            
'property2' => 'bar',
            
'groups' => 'Default',
        ));

        
$this->assertEquals($expected$constraint);
    }

    public function 
testSerializeKeepsCustomGroups()
    {
        
$constraint = new ConstraintA(array(
            
'property1' => 'foo',
            
'property2' => 'bar',
            
'groups' => 'MyGroup',
        ));

        
$constraint unserialize(serialize($constraint));

        
$this->assertSame(array('MyGroup'), $constraint->groups);
    }

    
/**
     * @expectedException SymfonyComponentValidatorExceptionInvalidArgumentException
     */
    
public function testGetErrorNameForUnknownCode()
    {
        
Constraint::getErrorName(1);
    }
}
Онлайн: 0
Реклама