From 060bafefe3c00fb7715bc5b66cccce1d56ab93ca Mon Sep 17 00:00:00 2001 From: David Monllao Date: Wed, 3 Apr 2013 13:51:40 +0800 Subject: [PATCH] MDL-38823 behat: New behat_form_radio To deal with radio inputs after allowing behat_form_field to delegate in specific fields managers. It also fixes a BIG issue when calling a no required class. --- lib/behat/form_field/behat_form_field.php | 4 +- lib/behat/form_field/behat_form_radio.php | 59 +++++++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 lib/behat/form_field/behat_form_radio.php diff --git a/lib/behat/form_field/behat_form_field.php b/lib/behat/form_field/behat_form_field.php index 8ba838a3a44..19340b7d607 100644 --- a/lib/behat/form_field/behat_form_field.php +++ b/lib/behat/form_field/behat_form_field.php @@ -126,8 +126,7 @@ class behat_form_field { $classname = 'behat_form_checkbox'; break; case 'radio': - // Behaves the same way. - $classname = 'behat_form_checkbox'; + $classname = 'behat_form_radio'; break; default: return false; @@ -140,6 +139,7 @@ class behat_form_field { } $classpath = $CFG->dirroot . '/lib/behat/form_field/' . $classname . '.php'; + require_once($classpath); return new $classname($this->session, $this->field); } diff --git a/lib/behat/form_field/behat_form_radio.php b/lib/behat/form_field/behat_form_radio.php new file mode 100644 index 00000000000..445751ed7a6 --- /dev/null +++ b/lib/behat/form_field/behat_form_radio.php @@ -0,0 +1,59 @@ +. + +/** + * Radio input form element. + * + * @package core_form + * @category test + * @copyright 2013 David Monllaó + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +// NOTE: no MOODLE_INTERNAL test here, this file may be required by behat before including /config.php. + +require_once(__DIR__ . '/behat_form_checkbox.php'); + +/** + * Radio input form field. + * + * Extends behat_form_checkbox as the set_value() behaviour + * is the same. + * + * This form field type can be added to forms as any other + * moodle form element, but it does not make sense without + * a group of radio inputs, so is hard to find it alone and + * detect it by behat_form_manager::get_field(), where is useful + * is when the default behat_form_field class is being used, it + * finds a input[type=radio] and it delegates set_value() and + * get_value() to behat_form_radio. + * + * @package core_form + * @category test + * @copyright 2013 David Monllaó + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class behat_form_radio extends behat_form_checkbox { + + /** + * Returns the radio input value attribute. + * + * @return string The value attribute + */ + public function get_value() { + return $this->field->getValue(); + } +}