public function testSerializeWithFormAddedMultipleTimes() { $form1 = $this->createForm('form1'); $form2 = $this->createForm('form2'); $child1 = $this->createForm('child1'); $form1View = new FormView(); $form2View = new FormView(); $child1View = new FormView(); $child1View->vars['is_selected'] = function ($choice, array $values) { return in_array($choice, $values, true); }; $form1->add($child1); $form2->add($child1); $form1View->children['child1'] = $child1View; $form2View->children['child1'] = $child1View; $this->dataExtractor->expects($this->at(0)) ->method('extractConfiguration') ->with($form1) ->will($this->returnValue(array('config' => 'foo'))); $this->dataExtractor->expects($this->at(1)) ->method('extractConfiguration') ->with($child1) ->will($this->returnValue(array('config' => 'bar'))); $this->dataExtractor->expects($this->at(2)) ->method('extractDefaultData') ->with($form1) ->will($this->returnValue(array('default_data' => 'foo'))); $this->dataExtractor->expects($this->at(3)) ->method('extractDefaultData') ->with($child1) ->will($this->returnValue(array('default_data' => 'bar'))); $this->dataExtractor->expects($this->at(4)) ->method('extractSubmittedData') ->with($form1) ->will($this->returnValue(array('submitted_data' => 'foo'))); $this->dataExtractor->expects($this->at(5)) ->method('extractSubmittedData') ->with($child1) ->will($this->returnValue(array('submitted_data' => 'bar'))); $this->dataExtractor->expects($this->at(6)) ->method('extractViewVariables') ->with($form1View) ->will($this->returnValue(array('view_vars' => 'foo'))); $this->dataExtractor->expects($this->at(7)) ->method('extractViewVariables') ->with($child1View) ->will($this->returnValue(array('view_vars' => $child1View->vars))); $this->dataExtractor->expects($this->at(8)) ->method('extractConfiguration') ->with($form2) ->will($this->returnValue(array('config' => 'foo'))); $this->dataExtractor->expects($this->at(9)) ->method('extractConfiguration') ->with($child1) ->will($this->returnValue(array('config' => 'bar'))); $this->dataExtractor->expects($this->at(10)) ->method('extractDefaultData') ->with($form2) ->will($this->returnValue(array('default_data' => 'foo'))); $this->dataExtractor->expects($this->at(11)) ->method('extractDefaultData') ->with($child1) ->will($this->returnValue(array('default_data' => 'bar'))); $this->dataExtractor->expects($this->at(12)) ->method('extractSubmittedData') ->with($form2) ->will($this->returnValue(array('submitted_data' => 'foo'))); $this->dataExtractor->expects($this->at(13)) ->method('extractSubmittedData') ->with($child1) ->will($this->returnValue(array('submitted_data' => 'bar'))); $this->dataExtractor->expects($this->at(14)) ->method('extractViewVariables') ->with($form2View) ->will($this->returnValue(array('view_vars' => 'foo'))); $this->dataExtractor->expects($this->at(15)) ->method('extractViewVariables') ->with($child1View) ->will($this->returnValue(array('view_vars' => $child1View->vars))); $this->dataCollector->collectConfiguration($form1); $this->dataCollector->collectDefaultData($form1); $this->dataCollector->collectSubmittedData($form1); $this->dataCollector->collectViewVariables($form1View); $this->dataCollector->buildFinalFormTree($form1, $form1View); $this->dataCollector->collectConfiguration($form2); $this->dataCollector->collectDefaultData($form2); $this->dataCollector->collectSubmittedData($form2); $this->dataCollector->collectViewVariables($form2View); $this->dataCollector->buildFinalFormTree($form2, $form2View); $this->dataCollector->serialize(); }