Merge branch 'MDL-38486_master' of git://github.com/dmonllao/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 1 Apr 2013 20:17:12 +0000 (22:17 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 1 Apr 2013 20:17:12 +0000 (22:17 +0200)
1  2 
course/tests/behat/behat_course.php

@@@ -83,35 -85,103 +85,123 @@@ class behat_course extends behat_base 
       */
      public function i_add_to_section($activity, $section) {
  
 -        // Clicks add activity or resource section link.
 -        $sectionxpath = "//*[@id='section-" . $section . "']/*/*/*/div[@class='section-modchooser']/span/a";
 -        $sectionnode = $this->find('xpath', $sectionxpath);
 -        $sectionnode->click();
 -
 -        // Clicks the selected activity if it exists.
 -        $activityxpath = ".//label[contains(.,'" . $activity . "')]/input";
 -        $activitynode = $this->find('xpath', $activityxpath);
 -        $activitynode->doubleClick();
 +        $sectionxpath = "//*[@id='section-" . $section . "']";
 +
 +        if ($this->running_javascript()) {
 +
 +            // Clicks add activity or resource section link.
 +            $sectionxpath = $sectionxpath . "/descendant::div[@class='section-modchooser']/span/a";
 +            $sectionnode = $this->find('xpath', $sectionxpath);
 +            $sectionnode->click();
 +
 +            // Clicks the selected activity if it exists.
 +            $activityxpath = ".//label[contains(.,'" . $activity . "')]/input";
 +            $activitynode = $this->find('xpath', $activityxpath);
 +            $activitynode->doubleClick();
 +
 +        } else {
 +            // Without Javascript.
 +
 +            // Selecting the option from the select box which contains the option.
 +            $selectxpath = $sectionxpath . "/descendant::div[contains(concat(' ', @class, ' '), ' section_add_menus ')]
 +/descendant::select[contains(., '" . $activity . "')]";
 +            $selectnode = $this->find('xpath', $selectxpath);
 +            $selectnode->selectOption($activity);
 +
 +            // Go button.
 +            $gobuttonxpath = $selectxpath . "/ancestor::form/descendant::input[@type='submit']";
 +            $gobutton = $this->find('xpath', $gobuttonxpath);
 +            $gobutton->click();
 +        }
 +
      }
  
+     /**
+      * Turns course section highlighting on.
+      *
+      * @Given /^I turn section "(?P<section_number>\d+)" highlighting on$/
+      * @param int $sectionnumber The section number
+      */
+     public function i_turn_section_highlighting_on($sectionnumber) {
+         // Ensures the section exists.
+         $xpath = $this->section_exists($sectionnumber);
+         return array(
+             new Given('I click on "' . get_string('markthistopic') . '" "link" in the "' . $xpath . '" "xpath_element"'),
+             new Given('I wait "2" seconds')
+         );
+     }
+     /**
+      * Turns course section highlighting off.
+      *
+      * @Given /^I turn section "(?P<section_number>\d+)" highlighting off$/
+      * @param int $sectionnumber The section number
+      */
+     public function i_turn_section_highlighting_off($sectionnumber) {
+         // Ensures the section exists.
+         $xpath = $this->section_exists($sectionnumber);
+         return array(
+             new Given('I click on "' . get_string('markedthistopic') . '" "link" in the "' . $xpath . '" "xpath_element"'),
+             new Given('I wait "2" seconds')
+         );
+     }
+     /**
+      * Checks if the specified course section hightlighting is turned on.
+      *
+      * @throws ElementNotFoundException
+      * @throws ExpectationException
+      * @Then /^section "(?P<section_number>\d+)" should be highlighted$/
+      * @param int $sectionnumber The section number
+      */
+     public function section_should_be_highlighted($sectionnumber) {
+         // Ensures the section exists.
+         $xpath = $this->section_exists($sectionnumber);
+         // The important checking, we can not check the img.
+         $xpath = $xpath . "/descendant::img[@alt='" . get_string('markedthistopic') . "'][contains(@src, 'marked')]";
+         $exception = new ExpectationException('The "' . $sectionnumber . '" section is not highlighted', $this->getSession());
+         $this->find('xpath', $xpath, $exception);
+     }
+     /**
+      * Checks if the specified course section highlighting is turned off.
+      *
+      * @Then /^section "(?P<section_number>\d+)" should not be highlighted$/
+      * @param int $sectionnumber The section number
+      */
+     public function section_should_not_be_highlighted($sectionnumber) {
+         // We only catch ExpectationException, ElementNotFoundException should be thrown if the specified section does not exist.
+         try {
+             $this->section_should_be_highlighted($sectionnumber);
+         } catch (ExpectationException $e) {
+             // ExpectedException means that it is not highlighted.
+             return;
+         }
+         throw new ExpectationException('The "' . $sectionnumber . '" section is highlighted', $this->getSession());
+     }
+     /**
+      * Checks if the course section exists.
+      *
+      * @throws ElementNotFoundException Thrown by behat_base::find
+      * @param int $sectionnumber
+      * @return string The xpath of the existing section.
+      */
+     protected function section_exists($sectionnumber) {
+         // Just to give more info in case it does not exist.
+         $xpath = "//li[@id='section-" . $sectionnumber . "']";
+         $exception = new ElementNotFoundException($this->getSession(), "Section $sectionnumber ");
+         $this->find('xpath', $xpath, $exception);
+         return $xpath;
+     }
  }