public function testSubmitDeepNestedForm() { $form = new Form('product'); $form->add(new Form('title')); $form->add(new Form('description')); $form->add(new Form('picture')); $form->get('picture')->add(new Form('caption')); $form->get('picture')->add(new Form('file')); $data = ['title' => 'The title', 'description' => 'The description', 'picture' => ['caption' => 'Some caption']]; $files = ['picture' => ['file' => ['tmp_name' => 'foo', 'error' => 0]]]; $form->submit($data, $files); // Check root data $this->assertSame($data, $form->getData()); $this->assertSame($files, $form->getFiles()); // Check title data $this->assertSame('The title', $form->get('title')->getData()); $this->assertNull($form->get('title')->getFiles()); // Check description data $this->assertSame('The description', $form->get('description')->getData()); $this->assertNull($form->get('description')->getFiles()); // Check picture data $this->assertSame($data['picture'], $form->get('picture')->getData()); $this->assertSame($files['picture'], $form->get('picture')->getFiles()); // Check caption data $this->assertSame('Some caption', $form->get('picture')->get('caption')->getData()); $this->assertNull($form->get('picture')->get('caption')->getFiles()); // Check file data $this->assertNull($form->get('picture')->get('file')->getData()); $this->assertSame($files['picture']['file'], $form->get('picture')->get('file')->getFiles()); }