예제 #1
0
 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());
 }