MDL-49412 Behat: Add a 'I follow "x" in the user menu step'
authorDamyon Wiese <damyon@moodle.com>
Thu, 2 Apr 2015 07:38:28 +0000 (15:38 +0800)
committerAdrian Greeve <adrian@moodle.com>
Fri, 10 Apr 2015 09:18:22 +0000 (17:18 +0800)
Part of MDL-45774.

lib/tests/behat/behat_navigation.php

index d49ca4a..9ae6964 100644 (file)
 
 require_once(__DIR__ . '/../../behat/behat_base.php');
 
-use Behat\Behat\Context\Step\Given as Given,
-    Behat\Mink\Exception\ExpectationException as ExpectationException;
+use Behat\Behat\Context\Step\Given as Given;
+use Behat\Mink\Exception\ExpectationException as ExpectationException;
+use Behat\Mink\Exception\DriverException as DriverException;
+use Behat\Behat\Context\Step\When as When;
 
 /**
  * Steps definitions to navigate through the navigation tree nodes.
@@ -135,6 +137,33 @@ class behat_navigation extends behat_base {
         return true;
     }
 
+    /**
+     * Click on an entry in the user menu.
+     * @Given /^I follow "(?P<nodetext_string>(?:[^"]|\\")*)" in the user menu$/
+     *
+     * @throws ExpectationException
+     * @param string $nodetext
+     * @return bool|void
+     */
+    public function i_follow_in_the_user_menu($nodetext) {
+
+        // The user menu is broken without javascript.
+        if (!$this->running_javascript()) {
+            throw new DriverException('I follow in the user menu step is not available with Javascript disabled');
+        }
+
+        $steps = array();
+
+        $xpath = "//div[@class='usermenu']//a[contains(concat(' ', @class, ' '), ' toggle-display ')]";
+        $csspath = ".usermenu [data-rel='menu-content']";
+
+        $steps[] = new When('I click on "'.$xpath.'" "xpath_element"');
+        $steps[] = new When('I click on "'.$nodetext.'" "link" in the "'.$csspath.'" "css_element"');
+
+        return $steps;
+
+    }
+
     /**
      * Expands the selected node of the navigation tree that matches the text.
      * @Given /^I expand "(?P<nodetext_string>(?:[^"]|\\")*)" node$/