From 9f5469f62d2096bc486ecd31202dc2931bfd040f Mon Sep 17 00:00:00 2001 From: Jeremy Mikola Date: Tue, 6 Jul 2010 11:12:55 -0400 Subject: [PATCH] [Form] Test case for binding a collection of field groups with an ArrayObject of objects. --- .../Component/Form/CollectionFieldTest.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/Symfony/Tests/Component/Form/CollectionFieldTest.php b/tests/Symfony/Tests/Component/Form/CollectionFieldTest.php index 0ebb170f6c..91fde3b682 100644 --- a/tests/Symfony/Tests/Component/Form/CollectionFieldTest.php +++ b/tests/Symfony/Tests/Component/Form/CollectionFieldTest.php @@ -5,6 +5,7 @@ namespace Symfony\Tests\Component\Form; 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 @@ class CollectionFieldTest extends \PHPUnit_Framework_TestCase $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()); + } }