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/>.
/**
* Custom behat step definitions.
*
* @package block_dash
* @copyright 2022 bdecent gmbh <https://bdecent.de>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once(__DIR__ . '/../../../../lib/behat/behat_base.php');
use Behat\Gherkin\Node\TableNode as TableNode,
Behat\Mink\Exception\DriverException as DriverException,
Behat\Mink\Exception\ExpectationException as ExpectationException;
/**
* Custom behat step definitions.
*/
class behat_block_dash extends behat_base {
/**
* Turns block editing mode on.
*
* @Given I turn dash block editing mode on
*/
public function i_turn_dash_block_editing_mode_on() {
global $CFG;
if ($CFG->branch >= "400") {
$this->execute('behat_forms::i_set_the_field_to', [get_string('editmode'), 1]);
if (!$this->running_javascript()) {
$this->execute('behat_general::i_click_on', [
get_string('setmode', 'core'),
'button',
]);
}
} else {
$this->execute('behat_general::i_click_on', ['Blocks editing on', 'button']);
}
}
/**
* I follow badge recipients
* @Given I follow badge recipients
*/
public function i_follow_badge_recipients() {
global $CFG;
if ($CFG->branch >= "400") {
$this->execute('behat_forms::i_select_from_the_singleselect', ["Recipients (0)", "jump"]);
} else {
$this->execute('behat_general::i_click_on', ["Recipients (0)", "link"]);
}
}
/**
* I follow dashboard
* @Given I follow dashboard
*/
public function i_follow_dashboard() {
global $CFG;
if ($CFG->branch >= "400") {
$this->execute('behat_general::i_click_on', ["Dashboard", 'link']);
} else {
$this->execute('behat_navigation::i_follow_in_the_user_menu', ["Dashboard"]);
}
}
/**
* Creates a datasource for dash block.
*
* @Given I create dash :arg1 datasource
*
* @throws ElementNotFoundException Thrown by behat_base::find
* @param string $datasource
*/
public function i_create_dash_datasource($datasource) {
global $CFG;
$this->execute('behat_navigation::i_navigate_to_in_site_administration',
['Appearance > Default Dashboard page']);
$this->execute('behat_block_dash::i_turn_dash_block_editing_mode_on', []);
$this->execute('behat_blocks::i_add_the_block', ["Dash"]);
$this->execute('behat_general::i_click_on_in_the', [$datasource, 'text', 'New Dash', 'block']);
}
/**
* Clicks on preference of the dash 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 open the "(?P<block_name_string>(?:[^"]|\\")*)" block preference$/
* @param string $blockname
*/
public function i_open_the_dash_block($blockname) {
// Note that since $blockname may be either block name or CSS class, we can not use the exact label of "Configure" link.
$this->execute("behat_blocks::i_open_the_blocks_action_menu", $this->escape($blockname));
$this->execute('behat_general::i_click_on_in_the',
["Preference", "link", $this->escape($blockname), "block"]
);
}
/**
* Check that the focus mode enable.
*
* @Given /^I check dash css "(?P<value>(?:[^"]|\\")*)" "(?P<selector>(?:[^"]|\\")*)" "(?P<type>(?:[^"]|\\")*)"$/
* @param string $value
* @param string $selector
* @param string $type
* @throws ExpectationException
*/
public function i_check_dash_css($value, $selector, $type): void {
$stylejs = "
return (
Y.one('{$selector}').getComputedStyle('{$type}')
)
";
if (strpos($this->evaluate_script($stylejs), $value) === false) {
throw new ExpectationException("Doesn't working correct style", $this->getSession());
}
}
}