Browse Source

Add behat tests see BT#13541

Julio Montoya 5 years ago
parent
commit
886755ee57

+ 13 - 5
main/inc/lib/groupmanager.lib.php

@@ -45,6 +45,8 @@ class GroupManager
     const TOOL_NOT_AVAILABLE = 0;
     const TOOL_PUBLIC = 1;
     const TOOL_PRIVATE = 2;
+    const TOOL_PRIVATE_BETWEEN_USERS = 3;
+
     /**
      * Constants for the available group tools.
      */
@@ -2135,6 +2137,13 @@ class GroupManager
                     return true;
                 }
                 break;
+            case self::TOOL_PRIVATE_BETWEEN_USERS:
+                // Only works for announcements for now
+                $userIsInGroup = self::is_user_in_group($user_id, $groupInfo);
+                if ($userIsInGroup && $tool == self::GROUP_TOOL_ANNOUNCEMENT) {
+                    return true;
+                }
+                break;
         }
 
         return false;
@@ -2853,17 +2862,16 @@ class GroupManager
         echo '
             <ul class="toolbar-groups nav nav-tabs">
                 <li class="'.$activeSettings.'">
-                    <a href="'.sprintf($url, 'settings.php').'">
+                    <a id="group_settings_tab" href="'.sprintf($url, 'settings.php').'">
                     '.Display::return_icon('settings.png').' '.get_lang('Settings').'
                     </a>
                 </li>
                 <li class="'.$activeMember.'">
-                    <a href="'.sprintf($url, 'member_settings.php').'">
-                    '.Display::return_icon('user.png').' '.get_lang('GroupMembers').'
-                    </a>
+                    <a id="group_members_tab" href="'.sprintf($url, 'member_settings.php').'">
+                    '.Display::return_icon('user.png').' '.get_lang('GroupMembers').'</a>
                 </li>
                 <li class="'.$activeTutor.'">
-                    <a href="'.sprintf($url, 'tutor_settings.php').'">
+                    <a id="group_tutors_tab" href="'.sprintf($url, 'tutor_settings.php').'">
                     '.Display::return_icon('teacher.png').' '.get_lang('GroupTutors').'
                     </a>
                 </li>

+ 7 - 1
tests/behat/features/course_user_registration.feature

@@ -20,4 +20,10 @@ Feature: Subscribe users to the course
     Given I am on "/main/user/subscribe_user.php?keyword=acostea&type=5&cidReq=TEMP"
     Then I should see "Andrea"
     Then I follow "Register"
-    Then I should see "User Andrea Costea (acostea) has been registered to course TEMP"
+    Then I should see "User Andrea Costea (acostea) has been registered to course TEMP"
+
+  Scenario: Subscribe "fapple" as student to the course "TEMP" (leave it subscribed for further tests)
+    Given I am on "/main/user/subscribe_user.php?keyword=fapple&type=5&cidReq=TEMP"
+    Then I should see "Fiona"
+    Then I follow "Register"
+    Then I should see "User Fiona Apple (fapple) has been registered to course TEMP"

+ 208 - 3
tests/behat/features/toolGroup.feature

@@ -13,17 +13,38 @@ Feature: Group tool
     And I press "group_category_submit"
     Then I should see "Category created"
 
-  Scenario: Create a group
+  Scenario: Create 3 groups
     Given I am on "/main/group/group_creation.php?cidReq=TEMP&id_session=0"
     When I fill in the following:
-      | number_of_groups | 1 |
+      | number_of_groups | 3 |
     And I press "submit"
     Then I should see "New groups creation"
     When I fill in the following:
       | group_0_places | 1 |
+      | group_1_places | 1 |
+      | group_2_places | 1 |
+      | group_3_places | 1 |
     And I press "submit"
     Then I should see "group(s) has (have) been added"
 
+  Scenario: Change Group 0003 settings to make announcements private
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0003"
+    Then I should see "Group 0003"
+    Then I follow "Edit this group"
+    Then I check the "announcements_state" radio button with "2" value
+    Then I press "Save settings"
+    Then I should see "Group settings modified"
+
+  Scenario: Change Group 0004 settings to make it private
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0004"
+    Then I should see "Group 0004"
+    Then I follow "Edit this group"
+    Then I check the "announcements_state" radio button with "2" value
+    Then I press "Save settings"
+    Then I should see "Group settings modified"
+
   Scenario: Create document folder in group
     Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
     And I follow "Group 0001"
@@ -88,4 +109,188 @@ Feature: Group tool
     Then I follow "Delete"
     Then wait for the page to be loaded
     Then I should see "Are you sure to delete"
-    Then I follow "delete_item"
+    Then I follow "delete_item"
+
+  Scenario: Add fapple to the Group 0001
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0001"
+    Then I should see "Group 0001"
+    Then I follow "Edit this group"
+    Then I should see "Group members"
+    Then wait for the page to be loaded
+    Then I follow "group_members_tab"
+    Then I select "Fiona Apple Maggart (fapple)" from "group_members"
+    Then I press "group_members_rightSelected"
+    Then I press "Save settings"
+    And wait for the page to be loaded
+    Then I should see "Group settings modified"
+    Then I follow "Group 0001"
+    Then I should see "Fiona"
+
+  Scenario: Add fapple to the Group 0003
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0003"
+    Then I should see "Group 0003"
+    Then I follow "Edit this group"
+    Then I should see "Group members"
+    Then wait for the page to be loaded
+    Then I follow "group_members_tab"
+    Then I select "Fiona Apple Maggart (fapple)" from "group_members"
+    Then I press "group_members_rightSelected"
+    Then I press "Save settings"
+    And wait for the page to be loaded
+    Then I should see "Group settings modified"
+    Then I follow "Group 0003"
+    Then I should see "Fiona"
+
+  Scenario: Add acostea to the Group 0002
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0002"
+    Then I should see "Group 0002"
+    Then I follow "Edit this group"
+    Then I should see "Group members"
+    Then wait for the page to be loaded
+    Then I follow "group_members_tab"
+    Then I select "Andrea Costea (acostea)" from "group_members"
+    Then I press "group_members_rightSelected"
+    Then I press "Save settings"
+    And wait for the page to be loaded
+    Then I should see "Group settings modified"
+    Then I follow "Group 0002"
+    Then I should see "Andrea"
+
+  Scenario: Create an announcement for everybody inside Group 0001
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0001"
+    Then I should see "Group 0001"
+    And I follow "Announcements"
+    Then I should see "Announcements"
+    Then I follow "Add an announcement"
+    Then I should see "Add an announcement"
+    Then wait for the page to be loaded
+    Then I fill in the following:
+      | title | Announcement for all users inside Group 0001 |
+    And I fill in ckeditor field "content" with "Announcement description in Group 0001"
+    Then I follow "announcement_preview"
+    And wait for the page to be loaded
+    Then I should see "Announcement will be sent to"
+    Then I press "submit"
+    Then I should see "Announcement has been added"
+
+  Scenario: Create an announcement for fapple inside Group 0001
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0001"
+    Then I should see "Group 0001"
+    And I follow "Announcements"
+    Then I should see "Announcements"
+    Then I follow "Add an announcement"
+    Then I should see "Add an announcement"
+    Then wait for the page to be loaded
+    Then I press "choose_recipients"
+    Then I select "Fiona Apple" from "users"
+    Then I press "users_rightSelected"
+    Then I fill in the following:
+      | title | Announcement for user fapple inside Group 0001 |
+    And I fill in ckeditor field "content" with "Announcement description for user fapple inside Group 0001"
+    Then I follow "announcement_preview"
+    And wait for the page to be loaded
+    Then I should see "Announcement will be sent to"
+    Then I press "submit"
+    Then I should see "Announcement has been added"
+
+  Scenario: Create an announcement for everybody inside Group 0003 (private)
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0003"
+    Then I should see "Group 0003"
+    And I follow "Announcements"
+    Then I should see "Announcements"
+    Then I follow "Add an announcement"
+    Then I should see "Add an announcement"
+    Then wait for the page to be loaded
+    Then I fill in the following:
+      | title | Announcement for all users inside Group 0003 |
+    And I fill in ckeditor field "content" with "Announcement description in Group 0003"
+    Then I follow "announcement_preview"
+    And wait for the page to be loaded
+    Then I should see "Announcement will be sent to"
+    Then I press "submit"
+    Then I should see "Announcement has been added"
+
+  Scenario: Create an announcement for fapple inside Group 0003
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0003"
+    Then I should see "Group 0003"
+    And I follow "Announcements"
+    Then I should see "Announcements"
+    Then I follow "Add an announcement"
+    Then I should see "Add an announcement"
+    Then wait for the page to be loaded
+    Then I press "choose_recipients"
+    Then I select "Fiona Apple" from "users"
+    Then I press "users_rightSelected"
+    Then I fill in the following:
+      | title | Announcement for user fapple inside Group 0003 |
+    And I fill in ckeditor field "content" with "Announcement description for user fapple inside Group 0003"
+    Then I follow "announcement_preview"
+    And wait for the page to be loaded
+    Then I should see "Announcement will be sent to"
+    Then I press "submit"
+    Then I should see "Announcement has been added"
+
+  Scenario: Check fapple access of announcements Group 0001 (fapple group)
+    Given I am logged as "fapple"
+    And I am on course "TEMP" homepage
+    And I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0001"
+    Then I should see "Group 0001"
+    Then I follow "Announcements"
+    And wait for the page to be loaded
+    Then I should see "Announcement for all users inside Group 0001"
+    Then I should see "Announcement for user fapple inside Group 0001"
+    Then I follow "Announcement for user fapple inside Group 0001 Group"
+    Then I should see "Announcement description for user fapple inside Group 0001"
+    Then I move backward one page
+    Then wait for the page to be loaded
+    Then I should see "Announcement for all users inside Group 0001"
+    Then I follow "Announcement for all users inside Group 0001"
+    Then I should see "Announcement description in Group 0001"
+
+  Scenario: Check fapple access of announcements Group 0003 (fapple group but private)
+    Given I am logged as "fapple"
+    And I am on course "TEMP" homepage
+    And I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I follow "Group 0003"
+    Then I should see "Group 0003"
+    Then I follow "Announcements"
+    And wait for the page to be loaded
+    Then I should see "Announcement for all users inside Group 0003"
+    Then I should see "Announcement for user fapple inside Group 0003"
+    Then I follow "Announcement for user fapple inside Group 0003 Group"
+    Then I should see "Announcement description for user fapple inside Group 0003"
+    Then I move backward one page
+    Then wait for the page to be loaded
+    Then I should see "Announcement for all users inside Group 0003"
+    Then I follow "Announcement for all users inside Group 0003"
+    Then I should see "Announcement description in Group 0003"
+
+  Scenario: Check acostea access of announcements in Group 001
+    Given I am logged as "acostea"
+    And I am on course "TEMP" homepage
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    Then I should see "Group 0001"
+    And I should see "Group 0002"
+    And I should see "Group 0003"
+    And I should see "Group 0004"
+    And I follow "Group 0001"
+    Then I should see "Group 0001"
+    Then I follow "Announcements"
+    And wait for the page to be loaded
+    Then I should see "Announcement for all users inside Group 0001"
+    Then I should not see "Announcement for user fapple inside Group 0001"
+    Then I follow "Announcement for all users inside Group 0001"
+    Then I should see "Announcement description in Group 0001"
+    Given I am on "/main/group/group.php?cidReq=TEMP&id_session=0"
+    And I should see "Group 0003"
+    And I follow "Group 0003"
+    Then I should see "Group 0003"
+    Then I should not see "Announcements"