Skip to content

Commit

Permalink
Merge branch 'MDL-70167-master' of git://github.com/andrewnicols/moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
abgreeve committed Dec 3, 2020
2 parents 1cdae7a + 9d6413d commit ef4a0fc
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 46 deletions.
36 changes: 18 additions & 18 deletions lib/editor/atto/tests/behat/disablecontrol.feature
Expand Up @@ -19,27 +19,27 @@ Feature: Atto with enable/disable function.
@javascript
Scenario: Check disable Atto editor.
When I set the field "mycontrol" to "Disable"
Then the "disabled" attribute of "button.atto_collapse_button" "css_element" should contain "disabled"
And the "disabled" attribute of "button.atto_title_button" "css_element" should contain "disabled"
And the "disabled" attribute of "button.atto_bold_button" "css_element" should contain "disabled"
And the "disabled" attribute of "button.atto_italic_button" "css_element" should contain "disabled"
And the "disabled" attribute of "button.atto_unorderedlist_button_insertUnorderedList" "css_element" should contain "disabled"
And the "disabled" attribute of "button.atto_orderedlist_button_insertOrderedList" "css_element" should contain "disabled"
And the "disabled" attribute of "button.atto_link_button" "css_element" should contain "disabled"
And the "disabled" attribute of "button.atto_link_button_unlink" "css_element" should contain "disabled"
And the "disabled" attribute of "button.atto_image_button" "css_element" should contain "disabled"
Then the "disabled" attribute of "button.atto_collapse_button" "css_element" should be set
And the "disabled" attribute of "button.atto_title_button" "css_element" should be set
And the "disabled" attribute of "button.atto_bold_button" "css_element" should be set
And the "disabled" attribute of "button.atto_italic_button" "css_element" should be set
And the "disabled" attribute of "button.atto_unorderedlist_button_insertUnorderedList" "css_element" should be set
And the "disabled" attribute of "button.atto_orderedlist_button_insertOrderedList" "css_element" should be set
And the "disabled" attribute of "button.atto_link_button" "css_element" should be set
And the "disabled" attribute of "button.atto_link_button_unlink" "css_element" should be set
And the "disabled" attribute of "button.atto_image_button" "css_element" should be set
And the "contenteditable" attribute of "div#id_myeditoreditable" "css_element" should contain "false"

@javascript
Scenario: Check enable Atto editor.
When I set the field "mycontrol" to "Enable"
Then "button.atto_collapse_button[disabled]" "css_element" should not exist
And "button.atto_title_button[disabled]" "css_element" should not exist
And "button.atto_bold_button[disabled]" "css_element" should not exist
And "button.atto_italic_button[disabled]" "css_element" should not exist
And "button.atto_unorderedlist_button_insertUnorderedList[disabled]" "css_element" should not exist
And "button.atto_orderedlist_button_insertOrderedList[disabled]" "css_element" should not exist
And "button.atto_link_button[disabled]" "css_element" should not exist
And "button.atto_link_button_unlink[disabled]" "css_element" should not exist
And "button.atto_image_button[disabled]" "css_element" should not exist
Then the "disabled" attribute of "button.atto_collapse_button" "css_element" should not be set
And the "disabled" attribute of "button.atto_title_button" "css_element" should not be set
And the "disabled" attribute of "button.atto_bold_button" "css_element" should not be set
And the "disabled" attribute of "button.atto_italic_button" "css_element" should not be set
And the "disabled" attribute of "button.atto_unorderedlist_button_insertUnorderedList" "css_element" should not be set
And the "disabled" attribute of "button.atto_orderedlist_button_insertOrderedList" "css_element" should not be set
And the "disabled" attribute of "button.atto_link_button" "css_element" should not be set
And the "disabled" attribute of "button.atto_link_button_unlink" "css_element" should not be set
And the "disabled" attribute of "button.atto_image_button" "css_element" should not be set
And the "contenteditable" attribute of "div#id_myeditoreditable" "css_element" should contain "true"
4 changes: 2 additions & 2 deletions lib/editor/textarea/tests/behat/disablecontrol.feature
Expand Up @@ -23,9 +23,9 @@ Feature: Text area with enable/disable function.
@javascript
Scenario: Check disable Text area editor.
When I set the field "mycontrol" to "Disable"
Then the "readonly" attribute of "textarea#id_myeditor" "css_element" should contain "readonly"
Then the "readonly" attribute of "textarea#id_myeditor" "css_element" should be set

@javascript
Scenario: Check enable Text area editor.
When I set the field "mycontrol" to "Enable"
Then "textarea#id_myeditor[readonly]" "css_element" should not exist
Then the "readonly" attribute of "textarea#id_myeditor" "css_element" should not be set
63 changes: 37 additions & 26 deletions lib/tests/behat/behat_general.php
Expand Up @@ -945,13 +945,7 @@ protected function check_element_order(
* @param string $selectortype The type of element where we are looking in.
*/
public function the_element_should_be_disabled($element, $selectortype) {

// Transforming from steps definitions selector/locator format to Mink format and getting the NodeElement.
$node = $this->get_selected_node($selectortype, $element);

if (!$node->hasAttribute('disabled')) {
throw new ExpectationException('The element "' . $element . '" is not disabled', $this->getSession());
}
$this->the_attribute_of_should_be_set("disabled", $element, $selectortype, false);
}

/**
Expand All @@ -963,13 +957,7 @@ public function the_element_should_be_disabled($element, $selectortype) {
* @param string $selectortype The type of where we look
*/
public function the_element_should_be_enabled($element, $selectortype) {

// Transforming from steps definitions selector/locator format to mink format and getting the NodeElement.
$node = $this->get_selected_node($selectortype, $element);

if ($node->hasAttribute('disabled')) {
throw new ExpectationException('The element "' . $element . '" is not enabled', $this->getSession());
}
$this->the_attribute_of_should_be_set("disabled", $element, $selectortype, true);
}

/**
Expand All @@ -981,12 +969,7 @@ public function the_element_should_be_enabled($element, $selectortype) {
* @param string $selectortype The type of element where we are looking in.
*/
public function the_element_should_be_readonly($element, $selectortype) {
// Transforming from steps definitions selector/locator format to Mink format and getting the NodeElement.
$node = $this->get_selected_node($selectortype, $element);

if (!$node->hasAttribute('readonly')) {
throw new ExpectationException('The element "' . $element . '" is not readonly', $this->getSession());
}
$this->the_attribute_of_should_be_set("readonly", $element, $selectortype, false);
}

/**
Expand All @@ -998,12 +981,7 @@ public function the_element_should_be_readonly($element, $selectortype) {
* @param string $selectortype The type of element where we are looking in.
*/
public function the_element_should_not_be_readonly($element, $selectortype) {
// Transforming from steps definitions selector/locator format to Mink format and getting the NodeElement.
$node = $this->get_selected_node($selectortype, $element);

if ($node->hasAttribute('readonly')) {
throw new ExpectationException('The element "' . $element . '" is readonly', $this->getSession());
}
$this->the_attribute_of_should_be_set("readonly", $element, $selectortype, true);
}

/**
Expand Down Expand Up @@ -1251,6 +1229,39 @@ public function i_change_window_size_to($windowviewport, $windowsize) {
$this->resize_window($windowsize, $windowviewport === 'viewport');
}

/**
* Checks whether there the specified attribute is set or not.
*
* @Then the :attribute attribute of :element :selectortype should be set
* @Then the :attribute attribute of :element :selectortype should :not be set
*
* @throws ExpectationException
* @param string $attribute Name of attribute
* @param string $element The locator of the specified selector
* @param string $selectortype The selector type
* @param string $not
*/
public function the_attribute_of_should_be_set($attribute, $element, $selectortype, $not = null) {
// Get the container node (exception if it doesn't exist).
$containernode = $this->get_selected_node($selectortype, $element);
$hasattribute = $containernode->hasAttribute($attribute);

if ($not && $hasattribute) {
$value = $containernode->getAttribute($attribute);
// Should not be set but is.
throw new ExpectationException(
"The attribute \"{$attribute}\" should not be set but has a value of '{$value}'",
$this->getSession()
);
} else if (!$not && !$hasattribute) {
// Should be set but is not.
throw new ExpectationException(
"The attribute \"{$attribute}\" should be set but is not",
$this->getSession()
);
}
}

/**
* Checks whether there is an attribute on the given element that contains the specified text.
*
Expand Down

0 comments on commit ef4a0fc

Please sign in to comment.