Merge branch '44711-28-r2' of git://github.com/samhemelryk/moodle
authorDan Poltawski <dan@moodle.com>
Tue, 20 May 2014 12:32:14 +0000 (20:32 +0800)
committerDan Poltawski <dan@moodle.com>
Tue, 20 May 2014 12:32:14 +0000 (20:32 +0800)
blocks/navigation/tests/behat/view_my_courses.feature
lib/tests/behat/behat_navigation.php

index ce073cc..4c8ad1b 100644 (file)
@@ -89,8 +89,7 @@ Feature: View my courses in navigation block
     And I expand "cat1" node
     And I should see "c1" in the "Navigation" "block"
     And I expand "c1" node
-    Then I should not see "
-    And I should see "cat1" in the "Navigation" "block"
+    Then I should see "cat1" in the "Navigation" "block"
     And I should see "cat2" in the "Navigation" "block"
     And I should see "cat3" in the "Navigation" "block"
     And I should see "cat31" in the "Navigation" "block"
@@ -99,4 +98,4 @@ Feature: View my courses in navigation block
     And I should see "c1" in the "Navigation" "block"
     And I should not see "c2" in the "Navigation" "block"
     And I should see "c31" in the "Navigation" "block"
-    And I should not see "c32" in the "Navigation" "block"
\ No newline at end of file
+    And I should not see "c32" in the "Navigation" "block"
index 887743d..30e86b9 100644 (file)
@@ -64,7 +64,7 @@ class behat_navigation extends behat_base {
         $hasblocktree = "[contains(concat(' ', normalize-space(@class), ' '), ' block_tree ')]";
         $hasbranch = "[contains(concat(' ', normalize-space(@class), ' '), ' branch ')]";
         $hascollapsed = "li[contains(concat(' ', normalize-space(@class), ' '), ' collapsed ') or @data-exandable='1']";
-        $notcollapsed = "[not(contains(concat(' ', normalize-space(@class), ' '), ' collapsed '))]";
+        $notcollapsed = "li[not(contains(concat(' ', normalize-space(@class), ' '), ' collapsed '))]";
         $match = "[normalize-space(.)={$nodetextliteral}]";
 
         // Avoid problems with quotes.
@@ -77,8 +77,12 @@ class behat_navigation extends behat_base {
             $iscollapsed = 'li';
         }
 
-        $xpath  = "//ul{$hasblocktree}//li{$notcollapsed}/ul/{$iscollapsed}/p{$isbranch}/a{$match}|";
-        $xpath .= "//ul{$hasblocktree}//li{$notcollapsed}/ul/{$iscollapsed}/p{$isbranch}/span{$match}";
+        // First check root nodes.
+        $xpath  = "//ul{$hasblocktree}/$hascollapsed/p{$isbranch}/span{$match}|";
+        // Next search for the node containing the text within a link.
+        $xpath .= "//ul{$hasblocktree}//{$notcollapsed}/ul/{$iscollapsed}/p{$isbranch}/a{$match}|";
+        // Finally search for the node containing the text within a span.
+        $xpath .= "//ul{$hasblocktree}//{$notcollapsed}/ul/{$iscollapsed}/p{$isbranch}/span{$match}";
 
         $node = $this->find('xpath', $xpath, $exception);
         $this->ensure_node_is_visible($node);