/** * @return ButtonTag */ protected function getButton() { $button = new ButtonTag(); $button->setAttribute('name', self::BUTTON_NAME); $button->setAttribute('value', self::BUTTON_VALUE); return $button; }
public function __construct() { parent::__construct(); $this->attributeWhiteList[] = 'src'; $this->attributeWhiteList[] = 'alt'; }
/** * Tests form transformation with a simple and a more sophisticated example. */ public function testTransform() { $form = new HtmlFormTag(); $form->setParentObject(new Document()); $form->setAction('/some-url'); // setup reflection property to be able to inject the DOM structure to test $children = new ReflectionProperty(Document::class, 'children'); $children->setAccessible(true); // set up group $group = new FormGroupTag(); $group->setObjectId(XmlParser::generateUniqID()); $group->setParentObject($form); // set up fields $user = new TextFieldTag(); $user->setObjectId(XmlParser::generateUniqID()); $user->setAttributes(['name' => 'user', 'value' => 'some user']); $user->setParentObject($form); $pass = new TextFieldTag(); $pass->setObjectId(XmlParser::generateUniqID()); $pass->setAttributes(['name' => 'pass', 'value' => 'some pass']); $pass->setParentObject($group); $button = new ButtonTag(); $button->setObjectId(XmlParser::generateUniqID()); $button->setAttributes(['name' => 'submit', 'value' => 'submit']); $button->setParentObject($form); // assemble group $children->setValue($group, array_merge($children->getValue($group), [$pass->getObjectId() => $pass])); $group->setContent('<div class="pass"><' . $pass->getObjectId() . ' /></div>'); // assemble form $children->setValue($form, [$user->getObjectId() => $user, $group->getObjectId() => $group, $button->getObjectId() => $button]); $form->setContent('<p><' . $user->getObjectId() . ' /></p><' . $group->getObjectId() . ' /><' . $button->getObjectId() . ' />'); // build children explicitly up and then check for HTML code... $actual = $form->transformForm(); // general structure $this->assertContains('<form ', $actual); $this->assertContains('</form>', $actual); $this->assertContains('action="/some-url"', $actual); $this->assertContains('<input type="text" name="user" value="some user" />', $actual); $this->assertContains('<input type="text" name="pass" value="some pass" />', $actual); $this->assertContains('<input type="submit" name="submit" value="submit" />', $actual); $this->assertContains('<p>', $actual); $this->assertContains('</p>', $actual); $this->assertContains('<div class="pass">', $actual); $this->assertContains('</div>', $actual); }