1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Custom interaction with inplace editable elements. 19 * 20 * @package core_form 21 * @category test 22 * @copyright 2019 Andrew Nicols <andrew@nicols.co.uk> 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 24 */ 25 26 // NOTE: no MOODLE_INTERNAL test here, this file may be required by behat before including /config.php. 27 28 require_once (__DIR__ . '/behat_form_text.php'); 29 30 /** 31 * Custom interaction with inplace editable elements. 32 * 33 * @package core_form 34 * @category test 35 * @copyright 2019 Andrew Nicols <andrew@nicols.co.uk> 36 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 37 */ 38 class behat_form_inplaceeditable extends behat_form_text { 39 /** 40 * Sets the value to a field. 41 * 42 * @param string $value 43 * @return void 44 */ 45 public function set_value($value) { 46 // Require JS to run this step. 47 self::require_javascript(); 48 49 // Click to enable editing. 50 self::execute( 51 'behat_general::i_click_on_in_the', 52 [ 53 '[data-inplaceeditablelink]', 54 'css_element', 55 $this->field, 56 'NodeElement', 57 ] 58 ); 59 60 // Note: It is not possible to use the NodeElement->keyDown() and related functions because 61 // this can trigger a focusOnElement call each time. 62 // Instead use the behat_base::type_keys() function. 63 64 // The inplace editable selects all existing content on focus. 65 // Clear the existing value. 66 self::type_keys($this->session, [behat_keys::BACKSPACE]); 67 68 // Type in the new value, followed by ENTER to save the value. 69 self::type_keys($this->session, array_merge( 70 str_split($value), 71 [behat_keys::ENTER] 72 )); 73 } 74 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body