Beispiel #1
0
 /**
  * @param \PHPUnit_Extensions_Selenium2TestCase_Element $form
  * @param array $values
  * @param bool $clear
  * @throws \RuntimeException
  * @throws \Nette\NotImplementedException
  * @return \PHPUnit_Extensions_Selenium2TestCase_Element
  */
 protected function fillForm(\PHPUnit_Extensions_Selenium2TestCase_Element $form, array $values, $clear = TRUE)
 {
     // $this->accessing(); // todo: why not?
     foreach ($values as $name => $value) {
         $element = $form->byName($name);
         /** @var \PHPUnit_Extensions_Selenium2TestCase_Element $element */
         if (($tagName = strtolower($element->name())) === 'input') {
             if (($type = strtolower($element->attribute('type'))) === 'checkbox') {
                 if ($value) {
                     if (!$element->selected()) {
                         if (!$this->tryClickOnLabel($form, $type, $name)) {
                             $element->click();
                         }
                     }
                 } elseif (!$value) {
                     if ($element->selected()) {
                         if (!$this->tryClickOnLabel($form, $type, $name)) {
                             $element->click();
                         }
                     }
                 }
             } elseif ($type === 'radio') {
                 if ($this->tryClickOnLabel($form, $type, $name, $value)) {
                     continue;
                 }
                 foreach ($form->elements($this->using('name')->value($name)) as $element) {
                     /** @var \PHPUnit_Extensions_Selenium2TestCase_Element $element */
                     if ($element->value() == $value) {
                         $element->click();
                         continue 2;
                     }
                 }
                 throw new \RuntimeException("Radio input with value {$value} not found.");
             } else {
                 if ($clear) {
                     $element->clear();
                 }
                 $element->value($value);
             }
         } elseif ($tagName === 'textarea') {
             if ($clear) {
                 $element->clear();
             }
             $element->value($value);
         } elseif ($tagName === 'select') {
             throw new Nette\NotImplementedException();
         }
     }
     return $form;
 }