merged branch bschussek/issue5113-2.3 (PR #8981)

This PR was merged into the 2.3 branch.

Discussion
----------

[2.3][Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted

Same as #7940, rebased onto 2.3.

Commits
-------

7879f07 [DoctrineBridge] Improved test coverage of EntityChoiceList
58e7c10 [Form] Improved test coverage of ChoiceList classes
9542d72 [Form] Fixed expanded choice field to be marked invalid when unknown choices are submitted
72b8807 [Form] Fixed ChoiceList::get*By*() methods to preserve order and array keys
e1bf07f [Form] Removed usage of the ChoiceList::getIndicesFor*() methods where they don't offer any performance benefit
This commit is contained in:
Fabien Potencier 2013-09-10 22:26:31 +02:00
commit 51413e1cbe
4 changed files with 8 additions and 8 deletions

View File

@ -51,7 +51,7 @@ class GenericEntityChoiceListTest extends \PHPUnit_Framework_TestCase
if (!class_exists('Doctrine\ORM\EntityManager')) {
$this->markTestSkipped('Doctrine ORM is not available.');
}
$this->em = DoctrineTestHelper::createTestEntityManager();
$schemaTool = new SchemaTool($this->em);
@ -110,7 +110,7 @@ class GenericEntityChoiceListTest extends \PHPUnit_Framework_TestCase
}
/**
* @expectedException \Symfony\Component\Form\Exception\FormException
* @expectedException \Symfony\Component\Form\Exception\RuntimeException
*/
public function testChoicesMustBeManaged()
{

View File

@ -13,6 +13,7 @@ namespace Symfony\Bridge\Doctrine\Tests\Form\Type;
use Symfony\Bridge\Doctrine\Test\DoctrineTestHelper;
use Symfony\Component\Form\Exception\UnexpectedTypeException;
use Symfony\Component\Form\Test\TypeTestCase;
use Symfony\Bridge\Doctrine\Tests\Fixtures\GroupableEntity;
use Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity;
use Symfony\Bridge\Doctrine\Tests\Fixtures\SingleStringIdEntity;
@ -22,7 +23,6 @@ use Symfony\Bridge\Doctrine\Form\DoctrineOrmExtension;
use Doctrine\ORM\Tools\SchemaTool;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Form\Extension\Core\View\ChoiceView;
use Symfony\Component\Form\Tests\Extension\Core\Type\TypeTestCase;
class EntityTypeTest extends TypeTestCase
{

View File

@ -67,7 +67,7 @@ class ChoiceToBooleanArrayTransformer implements DataTransformerInterface
}
if ($this->placeholderPresent) {
$values['placeholder'] = false === $index;
$values['placeholder'] = 0 === count($valueMap);
}
return $values;

View File

@ -114,23 +114,23 @@ class CheckboxTypeTest extends \Symfony\Component\Form\Test\TypeTestCase
$this->assertNull($form->getViewData());
}
public function testBindWithEmptyValueAndFalseUnchecked()
public function testSubmitWithEmptyValueAndFalseUnchecked()
{
$form = $this->factory->create('checkbox', null, array(
'value' => '',
));
$form->bind(false);
$form->submit(false);
$this->assertFalse($form->getData());
$this->assertNull($form->getViewData());
}
public function testBindWithEmptyValueAndTrueChecked()
public function testSubmitWithEmptyValueAndTrueChecked()
{
$form = $this->factory->create('checkbox', null, array(
'value' => '',
));
$form->bind(true);
$form->submit(true);
$this->assertTrue($form->getData());
$this->assertSame('', $form->getViewData());