AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Steps definitions related with blocks.** @package block_multiblock* @copyright 2020 Peter Spicer <peter.spicer@catalyst-eu.net>* @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.use Behat\Mink\Exception\ElementNotFoundException as ElementNotFoundException;require_once(__DIR__ . '/../../../../lib/behat/behat_base.php');/*** Blocks management steps definitions.** @package block_multiblock* @copyright 2020 Peter Spicer <peter.spicer@catalyst-eu.net>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class behat_block_multiblock extends behat_base {/** @var object|null HTML/Text object based on moodle version. */private $htmlblock = null;/*** Return HTML/Text object based on moodle version** @return object*/private function htmlblock() {if (!empty($this->htmlblock)) {return $this->htmlblock;}global $CFG;$newblockname = $CFG->branch >= 400;$htmlblock = new stdClass;$htmlblock->name = $newblockname ? 'Text' : 'HTML';$htmlblock->defaulttitle = $newblockname ? '(new text block)' : '(new HTML block)';$this->htmlblock = $htmlblock;return $htmlblock;}/*** Clicks on "Manage ... contents" for specified block. Page must be in editing mode.** Argument block_name may be either the name of the block or CSS class of the block.** @Given /^I manage the contents of "(?P<block_name_string>(?:[^"]|\\")*)" block$/* @param string $blockname*/public function i_manage_the_contents_of_block($blockname) {// Problem 1, the block name might be the name or the CSS.// Problem 2, the string conceivably could be 'Manage contents' if the block name is empty.// As such we need to use what we do have of it.if (in_array($blockname, ["Text", "HTML"])) {$htmlblock = $this->htmlblock();$blockname = $htmlblock->name;}$this->execute("behat_blocks::i_open_the_blocks_action_menu", $this->escape($blockname));$this->execute('behat_general::i_click_on_in_the',array("Manage", "link", $this->escape($blockname), "block"));}/*** Adds an Text/HTML subblock in the manage contents page of a multiblock.** @Given /^I add the HTML block field$/*/public function i_add_the_html_block_field() {$block = $this->htmlblock();$this->execute("behat_forms::i_set_the_field_to", ["Add a block", $this->escape($block->name)]);$this->execute("behat_general::i_click_on_in_the", ["input[value=Add]", "css_element", "[role=main]", "css_element"]);}/*** Changes the title of a Text/HTML block in its configuration page.** Argument oldtitle is the current name of the block.* Argument newtitle is the new name of the block.** @Given /^I set the title of the HTML block to "(?P<new_string>(?:[^"]|\\")*)"$/* @Given /^I set the title of the HTML block to "(?P<new_string>(?:[^"]|\\")*)" from "(?P<old_string>(?:[^"]|\\")*)"$/** @param string $newtitle* @param string|false $oldtitle*/public function i_set_the_title_of_the_html_block_to($newtitle, $oldtitle = false) {$block = $this->htmlblock();$titlefieldlabel = $block->name . ' block title';$oldtitle = $oldtitle ?: $block->defaulttitle;$this->execute("behat_general::i_click_on_in_the", ["Settings", "link", $oldtitle, "table_row"]);$this->execute("behat_forms::i_set_the_field_to", [$this->escape($titlefieldlabel), $this->escape($newtitle)]);}/*** Enables editing mode for when you are on the dashboard.** @Given /^I enable editing mode whilst on the dashboard$/*/public function i_enable_editing_mode_whilst_on_the_dashboard() {global $CFG;if ($CFG->branch >= 400) {$this->execute("behat_navigation::i_turn_editing_mode_on");} else {$this->execute('behat_general::i_click_on_in_the',['Customise this page','button',"[id='page-header']",'css_element']);}}}