From 451ae0cabce6bd51facf0795889a326b84db4afb Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Tue, 11 Oct 2016 13:57:10 +0800 Subject: [PATCH] MDL-56353 behat: Added test for multi select dependency --- .../behat/multi_select_dependencies.feature | 25 +++++++ .../fixtures/multi_select_dependencies.php | 68 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 lib/form/tests/behat/multi_select_dependencies.feature create mode 100644 lib/form/tests/fixtures/multi_select_dependencies.php diff --git a/lib/form/tests/behat/multi_select_dependencies.feature b/lib/form/tests/behat/multi_select_dependencies.feature new file mode 100644 index 0000000000000..4a60d7da5452e --- /dev/null +++ b/lib/form/tests/behat/multi_select_dependencies.feature @@ -0,0 +1,25 @@ +@core_form @javascript @_bug_phantomjs +Feature: Forms with a multi select field dependency + In order to test multi select field dependency + As an admin + I need forms field which depends on multiple select options + + Scenario: Field should be enabled only when all select options are selected + # Get to the fixture page. + Given the following "courses" exist: + | fullname | shortname | format | + | Course 1 | C1 | topics | + And the following "activities" exist: + | activity | name | intro | course | idnumber | + | label | L1 | FixtureLink | C1 | label1 | + And I log in as "admin" + And I am on site homepage + And I follow "Course 1" + When I follow "FixtureLink" + Then the "Enter your name" "field" should be disabled + And I set the field "Choose one or more directions" to "South,West" + Then the "Enter your name" "field" should be enabled + And I set the field "Choose one or more directions" to "West" + Then the "Enter your name" "field" should be disabled + And I set the field "Choose one or more directions" to "North,West" + Then the "Enter your name" "field" should be disabled \ No newline at end of file diff --git a/lib/form/tests/fixtures/multi_select_dependencies.php b/lib/form/tests/fixtures/multi_select_dependencies.php new file mode 100644 index 0000000000000..a93dfd3fc34db --- /dev/null +++ b/lib/form/tests/fixtures/multi_select_dependencies.php @@ -0,0 +1,68 @@ +. + +/** + * Fixture for Behat test for testing multiple select dependencies. + * + * @package core_form + * @copyright 2016 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +require(__DIR__ . '/../../../../config.php'); +require_once($CFG->libdir . '/formslib.php'); + +// Behat test fixture only. +defined('BEHAT_SITE_RUNNING') || die('Only available on Behat test server'); + +/** + * Form for testing multiple select dependencies. + * + * @package core_form + * @copyright 2016 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class test_form extends moodleform { + + /** + * Form definition. + */ + public function definition() { + + $mform = $this->_form; + + $labels = array('North', 'Est', 'South', 'West'); + $select = $mform->addElement('select', 'mselect_name', 'Choose one or more directions', $labels); + $select->setMultiple(true); + + $mform->addElement('text', 'text_name', 'Enter your name'); + $mform->setType('text_name', PARAM_RAW); + + $mform->disabledIf('text_name', 'mselect_name[]', 'neq', array(2, 3)); + + $this->add_action_buttons($cancel = true, $submitlabel = null); + } +} + +$PAGE->set_context(context_system::instance()); +$PAGE->set_url('/lib/form/tests/fixtures/multi_select_dependencies.php'); +$PAGE->set_title('multi_select_dependencies'); + +$mform = new test_form(new moodle_url('/lib/form/tests/fixtures/multi_select_dependencies.php')); + +echo $OUTPUT->header(); +$mform->display(); +echo $OUTPUT->footer(); \ No newline at end of file