Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bridge/Doctrine/Tests/Form/DoctrineOrmTypeGuesserTest.php
Строк: 174
<?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 SymfonyBridgeDoctrineTestsForm;

use 
DoctrineCommonPersistenceMappingClassMetadata;
use 
SymfonyBridgeDoctrineFormDoctrineOrmTypeGuesser;
use 
SymfonyComponentFormGuessGuess;
use 
SymfonyComponentFormGuessValueGuess;

class 
DoctrineOrmTypeGuesserTest extends PHPUnit_Framework_TestCase
{
    
/**
     * @dataProvider requiredProvider
     */
    
public function testRequiredGuesser($classMetadata$expected)
    {
        
$this->assertEquals($expected$this->getGuesser($classMetadata)->guessRequired('TestEntity''field'));
    }

    public function 
requiredProvider()
    {
        
$return = array();

        
// Simple field, not nullable
        
$classMetadata $this->getMockBuilder('DoctrineORMMappingClassMetadata')->disableOriginalConstructor()->getMock();
        
$classMetadata->expects($this->once())->method('hasField')->with('field')->will($this->returnValue(true));
        
$classMetadata->expects($this->once())->method('isNullable')->with('field')->will($this->returnValue(false));

        
$return[] = array($classMetadata, new ValueGuess(trueGuess::HIGH_CONFIDENCE));

        
// Simple field, nullable
        
$classMetadata $this->getMockBuilder('DoctrineORMMappingClassMetadata')->disableOriginalConstructor()->getMock();
        
$classMetadata->expects($this->once())->method('hasField')->with('field')->will($this->returnValue(true));
        
$classMetadata->expects($this->once())->method('isNullable')->with('field')->will($this->returnValue(true));

        
$return[] = array($classMetadata, new ValueGuess(falseGuess::MEDIUM_CONFIDENCE));

        
// One-to-one, nullable (by default)
        
$classMetadata $this->getMockBuilder('DoctrineORMMappingClassMetadata')->disableOriginalConstructor()->getMock();
        
$classMetadata->expects($this->once())->method('hasField')->with('field')->will($this->returnValue(false));
        
$classMetadata->expects($this->once())->method('isAssociationWithSingleJoinColumn')->with('field')->will($this->returnValue(true));

        
$mapping = array('joinColumns' => array(array()));
        
$classMetadata->expects($this->once())->method('getAssociationMapping')->with('field')->will($this->returnValue($mapping));

        
$return[] = array($classMetadata, new ValueGuess(falseGuess::HIGH_CONFIDENCE));

        
// One-to-one, nullable (explicit)
        
$classMetadata $this->getMockBuilder('DoctrineORMMappingClassMetadata')->disableOriginalConstructor()->getMock();
        
$classMetadata->expects($this->once())->method('hasField')->with('field')->will($this->returnValue(false));
        
$classMetadata->expects($this->once())->method('isAssociationWithSingleJoinColumn')->with('field')->will($this->returnValue(true));

        
$mapping = array('joinColumns' => array(array('nullable' => true)));
        
$classMetadata->expects($this->once())->method('getAssociationMapping')->with('field')->will($this->returnValue($mapping));

        
$return[] = array($classMetadata, new ValueGuess(falseGuess::HIGH_CONFIDENCE));

        
// One-to-one, not nullable
        
$classMetadata $this->getMockBuilder('DoctrineORMMappingClassMetadata')->disableOriginalConstructor()->getMock();
        
$classMetadata->expects($this->once())->method('hasField')->with('field')->will($this->returnValue(false));
        
$classMetadata->expects($this->once())->method('isAssociationWithSingleJoinColumn')->with('field')->will($this->returnValue(true));

        
$mapping = array('joinColumns' => array(array('nullable' => false)));
        
$classMetadata->expects($this->once())->method('getAssociationMapping')->with('field')->will($this->returnValue($mapping));

        
$return[] = array($classMetadata, new ValueGuess(trueGuess::HIGH_CONFIDENCE));

        
// One-to-many, no clue
        
$classMetadata $this->getMockBuilder('DoctrineORMMappingClassMetadata')->disableOriginalConstructor()->getMock();
        
$classMetadata->expects($this->once())->method('hasField')->with('field')->will($this->returnValue(false));
        
$classMetadata->expects($this->once())->method('isAssociationWithSingleJoinColumn')->with('field')->will($this->returnValue(false));

        
$return[] = array($classMetadatanull);

        return 
$return;
    }

    private function 
getGuesser(ClassMetadata $classMetadata)
    {
        
$em $this->getMock('DoctrineCommonPersistenceObjectManager');
        
$em->expects($this->once())->method('getClassMetaData')->with('TestEntity')->will($this->returnValue($classMetadata));

        
$registry $this->getMock('DoctrineCommonPersistenceManagerRegistry');
        
$registry->expects($this->once())->method('getManagers')->will($this->returnValue(array($em)));

        return new 
DoctrineOrmTypeGuesser($registry);
    }
}
Онлайн: 0
Реклама