Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.

Differences Between: [Versions 311 and 400] [Versions 311 and 401] [Versions 311 and 402] [Versions 311 and 403]

   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  /**
  18   * Enrolment steps definitions.
  19   *
  20   * @package    core_enrol
  21   * @category   test
  22   * @copyright  2013 David MonllaĆ³
  23   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  24   */
  25  
  26  // NOTE: no MOODLE_INTERNAL test here, this file may be required by behat before including /config.php.
  27  
  28  require_once (__DIR__ . '/../../../lib/behat/behat_base.php');
  29  
  30  use Behat\Gherkin\Node\TableNode as TableNode;
  31  
  32  /**
  33   * Steps definitions for general enrolment actions.
  34   *
  35   * @package    core_enrol
  36   * @category   test
  37   * @copyright  2013 David MonllaĆ³
  38   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  39   */
  40  class behat_enrol extends behat_base {
  41  
  42      /**
  43       * Adds the specified enrolment method to the current course filling the form with the provided data.
  44       *
  45       * @Given /^I add "(?P<enrolment_method_name_string>(?:[^"]|\\")*)" enrolment method with:$/
  46       * @param string $enrolmethod
  47       * @param TableNode $table
  48       */
  49      public function i_add_enrolment_method_with($enrolmethod, TableNode $table) {
  50          // Navigate to enrolment method page.
  51          $parentnodes = get_string('users', 'admin');
  52          $this->execute("behat_navigation::i_navigate_to_in_current_page_administration",
  53              array($parentnodes .' > '. get_string('type_enrol_plural', 'plugin'))
  54          );
  55  
  56          // Select enrolment method.
  57          $this->execute('behat_forms::i_select_from_the_singleselect',
  58              array($this->escape($enrolmethod), get_string('addinstance', 'enrol'))
  59          );
  60  
  61          // Wait again, for page to reloaded.
  62          $this->execute('behat_general::i_wait_to_be_redirected');
  63  
  64          // Set form fields.
  65          $this->execute("behat_forms::i_set_the_following_fields_to_these_values", $table);
  66  
  67          // Ensure we get button in focus, before pressing button.
  68          if ($this->running_javascript()) {
  69              $this->execute('behat_general::i_press_named_key', ['', 'tab']);
  70          }
  71  
  72          // Save changes.
  73          $this->execute("behat_forms::press_button", get_string('addinstance', 'enrol'));
  74  
  75      }
  76  
  77      /**
  78       * Enrols the specified user in the current course without options.
  79       *
  80       * This is a simple step, to set enrolment options would be better to
  81       * create a separate step as a TableNode will be required.
  82       *
  83       * @Given /^I enrol "(?P<user_fullname_string>(?:[^"]|\\")*)" user as "(?P<rolename_string>(?:[^"]|\\")*)"$/
  84       * @param string $userfullname
  85       * @param string $rolename
  86       */
  87      public function i_enrol_user_as($userfullname, $rolename) {
  88  
  89          // Navigate to enrolment page.
  90          $parentnodes = get_string('users', 'admin');
  91          $this->execute("behat_navigation::i_navigate_to_in_current_page_administration",
  92              array($parentnodes . ' > '. get_string('enrolledusers', 'enrol'))
  93          );
  94  
  95          $this->execute("behat_forms::press_button", get_string('enrolusers', 'enrol'));
  96  
  97          if ($this->running_javascript()) {
  98              $this->execute('behat_forms::i_set_the_field_to', array(get_string('assignrole', 'enrol_manual'), $rolename));
  99  
 100              // We have a div here, not a tr.
 101              $this->execute('behat_forms::i_set_the_field_to', array(get_string('selectusers', 'enrol_manual'), $userfullname));
 102  
 103              $enrolusers = get_string('enrolusers', 'enrol_manual');
 104              $this->execute('behat_general::i_click_on_in_the', [$enrolusers, 'button', $enrolusers, 'dialogue']);
 105  
 106          } else {
 107              $this->execute('behat_forms::i_set_the_field_to', array(get_string('assignrole', 'role'), $rolename));
 108              $this->execute('behat_forms::i_set_the_field_to', array("addselect", $userfullname));
 109              $this->execute("behat_forms::press_button", "add");
 110          }
 111      }
 112  
 113  }