From ecd580f3101ad22e1c9efc8de29227c67ac96d98 Mon Sep 17 00:00:00 2001 From: David Monllao Date: Mon, 8 Apr 2013 16:16:47 +0800 Subject: [PATCH 1/2] MDL-38945 behat: Step definition to add users to groups --- group/tests/behat/behat_groups.php | 86 ++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 group/tests/behat/behat_groups.php diff --git a/group/tests/behat/behat_groups.php b/group/tests/behat/behat_groups.php new file mode 100644 index 00000000000..847727d3b78 --- /dev/null +++ b/group/tests/behat/behat_groups.php @@ -0,0 +1,86 @@ +. + +/** + * Behat groups-related steps definitions. + * + * @package core_group + * @category test + * @copyright 2013 David Monllaó + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +// NOTE: no MOODLE_INTERNAL test here, this file may be required by behat before including /config.php. + +require_once(__DIR__ . '/../../../lib/behat/behat_base.php'); + +use Behat\Mink\Exception\ElementNotFoundException as ElementNotFoundException; + +/** + * Groups-related steps definitions. + * + * @package core_group + * @category test + * @copyright 2013 David Monllaó + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class behat_groups extends behat_base { + + /** + * Add the specified user to the group. You should be in the groups page when running this step. + * + * @Given /^I add "(?P(?:[^"]|\\")*)" user to "(?P(?:[^"]|\\")*)" group$/ + * @throws ElementNotFoundException Thrown by behat_base::find + * @param string $username + * @param string $groupname + */ + public function i_add_user_to_group($username, $groupname) { + global $DB; + + $user = $DB->get_record('user', array('username' => $username)); + $userfullname = fullname($user); + + // We don't know the option text as it contains the number of users in the group. + $select = $this->find_field('groups'); + $xpath = "//select[@id='groups']/descendant::option[contains(., '" . $groupname . "')]"; + $groupoption = $this->find('xpath', $xpath); + $fulloption = $groupoption->getText(); + $select->selectOption($fulloption); + + // Here we don't need to wait for the AJAX response. + $this->find_button('Add/remove users')->click(); + + // Wait for add/remove members page to be loaded. + $this->getSession()->wait(self::TIMEOUT, '(document.readyState === "complete")'); + + // Getting the option and selecting it. + $select = $this->find_field('addselect'); + $xpath = "//select[@id='addselect']/descendant::option[contains(., '" . $userfullname . "')]"; + $memberoption = $this->find('xpath', $xpath); + $fulloption = $memberoption->getText(); + $select->selectOption($fulloption); + + // Click add button. + $this->find_button('Add')->click(); + + // Wait for the page to load. + $this->getSession()->wait(self::TIMEOUT, '(document.readyState === "complete")'); + + // Returning to the main groups page. + $this->find_button('Back to groups')->click(); + } + +} From e613fd905b5b687f5bc7526762ce9d3c067029de Mon Sep 17 00:00:00 2001 From: David Monllao Date: Mon, 8 Apr 2013 16:17:19 +0800 Subject: [PATCH 2/2] MDL-38945 behat: New test According to MDLQA-142, a teacher can organise students into groups within a course. --- group/tests/behat/create_groups.feature | 60 +++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 group/tests/behat/create_groups.feature diff --git a/group/tests/behat/create_groups.feature b/group/tests/behat/create_groups.feature new file mode 100644 index 00000000000..edd565a6858 --- /dev/null +++ b/group/tests/behat/create_groups.feature @@ -0,0 +1,60 @@ +@core_group +Feature: Organize students into groups + In order to organize course activities in groups + As a moodle teacher + I need to group students + + @javascript + Scenario: Assign students to groups + Given the following "courses" exists: + | fullname | shortname | category | groupmode | + | Course 1 | C1 | 0 | 1 | + And the following "users" exists: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@asd.com | + | student0 | Student | 0 | student0@asd.com | + | student1 | Student | 1 | student1@asd.com | + | student2 | Student | 2 | student2@asd.com | + | student3 | Student | 3 | student3@asd.com | + And the following "course enrolments" exists: + | user | course | role | + | teacher1 | C1 | editingteacher | + | student0 | C1 | student | + | student1 | C1 | student | + | student2 | C1 | student | + | student3 | C1 | student | + And I log in as "teacher1" + And I follow "Course 1" + And I expand "Users" node + And I follow "Groups" + And I press "Create group" + And I fill the moodle form with: + | Group name | Group 1 | + And I press "Save changes" + And I press "Create group" + And I fill the moodle form with: + | Group name | Group 2 | + And I press "Save changes" + When I add "student0" user to "Group 1" group + And I add "student1" user to "Group 1" group + And I add "student2" user to "Group 2" group + And I add "student3" user to "Group 2" group + Then I select "Group 1 (2)" from "groups" + And I wait "5" seconds + And the "members" select box should contain "Student 0" + And the "members" select box should contain "Student 1" + And the "members" select box should not contain "Student 2" + And I select "Group 2 (2)" from "groups" + And I wait "5" seconds + And the "members" select box should contain "Student 2" + And the "members" select box should contain "Student 3" + And the "members" select box should not contain "Student 0" + And I follow "Participants" + And I select "Group 1" from "Separate groups" + And I should see "Student 0" + And I should see "Student 1" + And I should not see "Student 2" + And I select "Group 2" from "Separate groups" + And I should see "Student 2" + And I should see "Student 3" + And I should not see "Student 0"