diff --git a/tests/Symfony/Tests/Component/Form/CollectionFieldTest.php b/tests/Symfony/Tests/Component/Form/CollectionFieldTest.php index 0ebb170f6c83..91fde3b682be 100644 --- a/tests/Symfony/Tests/Component/Form/CollectionFieldTest.php +++ b/tests/Symfony/Tests/Component/Form/CollectionFieldTest.php @@ -5,6 +5,7 @@ require_once __DIR__ . '/Fixtures/TestField.php'; use Symfony\Component\Form\CollectionField; +use Symfony\Component\Form\FieldGroup; use Symfony\Tests\Component\Form\Fixtures\TestField; @@ -96,4 +97,25 @@ public function testResizedIfBoundWithExtraDataAndModifiable() $this->assertEquals('foo@foo.com', $field[0]->getData()); $this->assertEquals('bar@bar.com', $field[1]->getData()); } + + public function testCollectionOfFieldGroupsBoundWithArrayObjectContainingObjects() + { + $fieldGroup = new FieldGroup('name'); + $fieldGroup->add(new TestField('first')); + $fieldGroup->add(new TestField('last')); + + $field = new CollectionField($fieldGroup); + + $nameData = (object) array('first' => 'Foo', 'last' => 'Bar'); + $collectionData = new \ArrayObject(array($nameData)); + $field->setData($collectionData); + + $boundNameData = (object) array('first' => 'Foo', 'last' => 'Baz'); + $boundCollectionData = new \ArrayObject(array($nameData)); + $field->bind($boundCollectionData); + + $this->assertTrue($field->has('0')); + $this->assertFalse($field->has('1')); + $this->assertEquals($boundNameData, $field[0]->getData()); + } }