function it_should_parse_non_group_elements(Node $node1, Node $node2, Node $node3, Node $node4, Node $node5, Node $node6) { $node1->getElementType()->shouldBeCalled()->willReturn('input_text'); $node2->getElementType()->shouldBeCalled()->willReturn('input_password'); $node3->getElementType()->shouldBeCalled()->willReturn('input_file'); $node4->getElementType()->shouldBeCalled()->willReturn('input_hidden'); $node5->getElementType()->shouldBeCalled()->willReturn('textarea'); $node6->getElementType()->shouldBeCalled()->willReturn('select'); $node1->getAttribute('name')->willReturn('input1'); $node2->getAttribute('name')->willReturn('input2'); $node3->getAttribute('name')->willReturn('input3'); $node4->getAttribute('name')->willReturn('input4'); $node5->getAttribute('name')->willReturn('input5'); $node6->getAttribute('name')->willReturn('input6'); $this->createFromNodes(func_get_args())->shouldReturnNodes(['input1' => 'DeForm\\Element\\TextElement', 'input2' => 'DeForm\\Element\\PasswordElement', 'input3' => 'DeForm\\Element\\FileElement', 'input4' => 'DeForm\\Element\\TextElement', 'input5' => 'DeForm\\Element\\TextareaElement', 'input6' => 'DeForm\\Element\\SelectElement']); }
function let(Request $request, Validator $validator, ElementFactory $elementFactory, ParserFactoryInterface $parserFactory, NodeInterface $formNode, NodeInterface $textInput, NodeInterface $hiddenInput, ElementInterface $textElement, DocumentInterface $document, ParserInterface $parser) { $this->beConstructedWith($request, $validator, $elementFactory, $parserFactory); $parserFactory->createDocument($this->html)->willReturn($document); $parserFactory->createParser($document)->willReturn($parser); $parser->getFormNode()->willReturn($formNode); $parser->getElementsNodes()->willReturn($nodes = [$textInput]); $formNode->getAttribute('name')->willReturn($form_name = 'testform'); $formNode->createElement('input')->shouldBeCalled()->willReturn($hiddenInput); $hiddenInput->setAttribute('type', 'hidden')->shouldBeCalled(); $hiddenInput->setAttribute('value', $form_name)->shouldBeCalled(); $hiddenInput->setAttribute('name', DeForm::DEFORM_ID)->shouldBeCalled(); $formNode->appendChild($hiddenInput)->shouldBeCalled(); $textInput->getElementType()->willReturn('input_text'); $textElement->getName()->willReturn('foo'); $elementFactory->createFromNodes($nodes)->willReturn([$textElement]); }
/** * @param NodeInterface $node * @return \DeForm\Element\ElementInterface|null */ protected function createElement(NodeInterface $node) { $element_type = $node->getElementType(); if (false === isset($this->mapTypes[$element_type])) { return null; } $class_name = '\\DeForm\\Element\\' . $this->mapTypes[$element_type]; if ('input_file' === $element_type) { return new $class_name($node, $this->request); } return new $class_name($node); }