From a33bc20d2e03a0b669ec8436d712f7aca406d4db Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Sun, 4 May 2014 12:44:27 +0800 Subject: [PATCH] MDL-45320 behat: Step definitions for blocks --- blocks/tests/behat/behat_blocks.php | 30 +++++++++---------- .../configure_block_throughout_site.feature | 7 ++--- blocks/tests/behat/manage_blocks.feature | 14 +++------ .../behat/restrict_available_blocks.feature | 1 - .../behat/return_block_original_state.feature | 10 ++----- 5 files changed, 24 insertions(+), 38 deletions(-) diff --git a/blocks/tests/behat/behat_blocks.php b/blocks/tests/behat/behat_blocks.php index 056bfbdf034..c46920c78b7 100644 --- a/blocks/tests/behat/behat_blocks.php +++ b/blocks/tests/behat/behat_blocks.php @@ -83,13 +83,13 @@ class behat_blocks extends behat_base { public function i_open_the_blocks_action_menu($blockname) { if (!$this->running_javascript()) { - throw new DriverException('Blocks action menu not available when Javascript is disabled'); + // Action menu does not need to be open if Javascript is off. + return; } // If it is already opened we do nothing. - $blocknode = $this->get_block_node($blockname); - $classes = array_flip(explode(' ', $blocknode->getAttribute('class'))); - if (!empty($classes['action-menu-shown'])) { + $blocknode = $this->get_text_selector_node('block', $blockname); + if ($blocknode->hasClass('action-menu-shown')) { return; } @@ -97,18 +97,18 @@ class behat_blocks extends behat_base { } /** - * Returns the DOM node of the block from
. + * Clicks on Configure block for specified block. Page must be in editing mode. * - * @throws ElementNotFoundException Thrown by behat_base::find - * @param string $blockname The block name - * @return NodeElement + * Argument block_name may be either the name of the block or CSS class of the block. + * + * @Given /^I configure the "(?P(?:[^"]|\\")*)" block$/ + * @param string $blockname */ - protected function get_block_node($blockname) { - - $blockname = $this->getSession()->getSelectorsHandler()->xpathLiteral($blockname); - $xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' block ')][contains(., $blockname)]"; - - return $this->find('xpath', $xpath); + public function i_configure_the_block($blockname) { + // Note that since $blockname may be either block name or CSS class, we can not use the exact label of "Configure" link. + return array( + new Given('I open the "'.$this->escape($blockname).'" blocks action menu'), + new Given('I click on "Configure" "link" in the "'.$this->escape($blockname).'" "block"') + ); } - } diff --git a/blocks/tests/behat/configure_block_throughout_site.feature b/blocks/tests/behat/configure_block_throughout_site.feature index 3812f69ab78..a34f7937e61 100644 --- a/blocks/tests/behat/configure_block_throughout_site.feature +++ b/blocks/tests/behat/configure_block_throughout_site.feature @@ -4,7 +4,6 @@ Feature: Add and configure blocks throughout the site As a manager I need to set and configure blocks throughout the site - @javascript Scenario: Add and configure a block throughtout the site Given the following "courses" exists: | fullname | shortname | category | @@ -18,8 +17,7 @@ Feature: Add and configure blocks throughout the site And I log in as "manager1" And I follow "Turn editing on" And I add the "Comments" block - And I open the "Comments" blocks action menu - And I follow "Configure Comments block" + And I configure the "Comments" block And I fill the moodle form with: | Page contexts | Display throughout the entire site | And I press "Save changes" @@ -27,8 +25,7 @@ Feature: Add and configure blocks throughout the site Then I should see "Comments" in the "Comments" "block" And I should see "Save comment" in the "Comments" "block" And I am on homepage - And I open the "Comments" blocks action menu - And I follow "Configure Comments block" + And I configure the "Comments" block And I fill the moodle form with: | Default weight | -10 (first) | And I press "Save changes" diff --git a/blocks/tests/behat/manage_blocks.feature b/blocks/tests/behat/manage_blocks.feature index 8255f24f12d..e9d346f4df4 100644 --- a/blocks/tests/behat/manage_blocks.feature +++ b/blocks/tests/behat/manage_blocks.feature @@ -39,19 +39,16 @@ Feature: Block appearances And I follow "Course 1" And I follow "Turn editing on" And I add the "Comments" block - And I open the "Comments" blocks action menu - And I follow "Configure Comments block" + And I configure the "Comments" block And I fill the moodle form with: | Display on page types | Any page | And I press "Save changes" - @javascript Scenario: Block settings can be modified so that a block apprears on any page When I follow "Test survey name" Then I should see "Comments" in the "Comments" "block" And I follow "Course 1" - And I open the "Comments" blocks action menu - And I follow "Configure Comments block" + And I configure the "Comments" block And I fill the moodle form with: | Display on page types | Any course page | And I press "Save changes" @@ -59,11 +56,9 @@ Feature: Block appearances And I follow "Test survey name" And I should not see "Comments" - @javascript Scenario: Block settings can be modified so that a block can be hidden or moved When I follow "Test book name" - And I open the "Comments" blocks action menu - And I follow "Configure Comments block" + And I configure the "Comments" block And I fill the moodle form with: | Visible | No | And I press "Save changes" @@ -72,8 +67,7 @@ Feature: Block appearances Then I should not see "Comments" And I expand "Course administration" node And I follow "Turn editing on" - And I open the "Comments" blocks action menu - And I follow "Configure Comments block" + And I configure the "Comments" block And I fill the moodle form with: | Visible | Yes | | Region | Right | diff --git a/blocks/tests/behat/restrict_available_blocks.feature b/blocks/tests/behat/restrict_available_blocks.feature index 58656a59e76..e8460f4ec24 100644 --- a/blocks/tests/behat/restrict_available_blocks.feature +++ b/blocks/tests/behat/restrict_available_blocks.feature @@ -15,7 +15,6 @@ Feature: Allowed blocks controls | user | course | role | | teacher1 | C1 | editingteacher | - @javascript Scenario: Blocks can be added with the default permissions Given I log in as "teacher1" And I follow "Course 1" diff --git a/blocks/tests/behat/return_block_original_state.feature b/blocks/tests/behat/return_block_original_state.feature index af9bce2ef74..8457401dae5 100644 --- a/blocks/tests/behat/return_block_original_state.feature +++ b/blocks/tests/behat/return_block_original_state.feature @@ -4,7 +4,6 @@ Feature: The context of a block can always be returned to it's original state. As an admin I need to be able to return the block to original state - @javascript Scenario: Add and configure a block to display on every page and revert back Given the following "courses" exists: | fullname | shortname | category | @@ -15,8 +14,7 @@ Feature: The context of a block can always be returned to it's original state. And I add the "Tags" block Then I should see "Tags" in the "Tags" "block" And I click on "Participants" "link" in the "//li[p/span[contains(normalize-space(string(.)), 'Current course')]]" "xpath_element" - And I open the "Tags" blocks action menu - And I follow "Configure Tags block" + And I configure the "Tags" block And I fill the moodle form with: | Display on page types | Any page | And I press "Save changes" @@ -25,8 +23,7 @@ Feature: The context of a block can always be returned to it's original state. | Assignment name | Assignment1 | | Description | Description | And I follow "Assignment1" - And I open the "Tags" blocks action menu - And I follow "Configure Tags block" + And I configure the "Tags" block And I fill the moodle form with: | Display on page types | Any assignment module page | And I press "Save changes" @@ -41,8 +38,7 @@ Feature: The context of a block can always be returned to it's original state. | Description | Description | And I follow "Assignment2" And I should see "Tags" in the "Tags" "block" - And I open the "Tags" blocks action menu - And I follow "Configure Tags block" + And I configure the "Tags" block And I fill the moodle form with: | Display on page types | Any page | And I press "Save changes"