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

use 
SymfonyComponentValidatorConstraintsComposite;
use 
SymfonyComponentValidatorConstraintsNotBlank;
use 
SymfonyComponentValidatorConstraintsNotNull;
use 
SymfonyComponentValidatorConstraintsValid;

class 
ConcreteComposite extends Composite
{
    public 
$constraints;

    protected function 
getCompositeOption()
    {
        return 
'constraints';
    }

    public function 
getDefaultOption()
    {
        return 
'constraints';
    }
}

/**
 * @since  2.6
 * @author Bernhard Schussek <bschussek@gmail.com>
 */
class CompositeTest extends PHPUnit_Framework_TestCase
{
    public function 
testMergeNestedGroupsIfNoExplicitParentGroup()
    {
        
$constraint = new ConcreteComposite(array(
            new 
NotNull(array('groups' => 'Default')),
            new 
NotBlank(array('groups' => array('Default''Strict'))),
        ));

        
$this->assertEquals(array('Default''Strict'), $constraint->groups);
        
$this->assertEquals(array('Default'), $constraint->constraints[0]->groups);
        
$this->assertEquals(array('Default''Strict'), $constraint->constraints[1]->groups);
    }

    public function 
testSetImplicitNestedGroupsIfExplicitParentGroup()
    {
        
$constraint = new ConcreteComposite(array(
            
'constraints' => array(
                new 
NotNull(),
                new 
NotBlank(),
            ),
            
'groups' => array('Default''Strict'),
        ));

        
$this->assertEquals(array('Default''Strict'), $constraint->groups);
        
$this->assertEquals(array('Default''Strict'), $constraint->constraints[0]->groups);
        
$this->assertEquals(array('Default''Strict'), $constraint->constraints[1]->groups);
    }

    public function 
testExplicitNestedGroupsMustBeSubsetOfExplicitParentGroups()
    {
        
$constraint = new ConcreteComposite(array(
            
'constraints' => array(
                new 
NotNull(array('groups' => 'Default')),
                new 
NotBlank(array('groups' => 'Strict')),
            ),
            
'groups' => array('Default''Strict'),
        ));

        
$this->assertEquals(array('Default''Strict'), $constraint->groups);
        
$this->assertEquals(array('Default'), $constraint->constraints[0]->groups);
        
$this->assertEquals(array('Strict'), $constraint->constraints[1]->groups);
    }

    
/**
     * @expectedException SymfonyComponentValidatorExceptionConstraintDefinitionException
     */
    
public function testFailIfExplicitNestedGroupsNotSubsetOfExplicitParentGroups()
    {
        new 
ConcreteComposite(array(
            
'constraints' => array(
                new 
NotNull(array('groups' => array('Default''Foobar'))),
            ),
            
'groups' => array('Default''Strict'),
        ));
    }

    public function 
testImplicitGroupNamesAreForwarded()
    {
        
$constraint = new ConcreteComposite(array(
            new 
NotNull(array('groups' => 'Default')),
            new 
NotBlank(array('groups' => 'Strict')),
        ));

        
$constraint->addImplicitGroupName('ImplicitGroup');

        
$this->assertEquals(array('Default''Strict''ImplicitGroup'), $constraint->groups);
        
$this->assertEquals(array('Default''ImplicitGroup'), $constraint->constraints[0]->groups);
        
$this->assertEquals(array('Strict'), $constraint->constraints[1]->groups);
    }

    public function 
testSingleConstraintsAccepted()
    {
        
$nestedConstraint = new NotNull();
        
$constraint = new ConcreteComposite($nestedConstraint);

        
$this->assertEquals(array($nestedConstraint), $constraint->constraints);
    }

    
/**
     * @expectedException SymfonyComponentValidatorExceptionConstraintDefinitionException
     */
    
public function testFailIfNoConstraint()
    {
        new 
ConcreteComposite(array(
            new 
NotNull(array('groups' => 'Default')),
            
'NotBlank',
        ));
    }

    
/**
     * @expectedException SymfonyComponentValidatorExceptionConstraintDefinitionException
     */
    
public function testValidCantBeNested()
    {
        new 
ConcreteComposite(array(
            new 
Valid(),
        ));
    }
}
Онлайн: 0
Реклама