[moodle.git] / admin / tool / monitor / tests / behat / subscription.feature
1 @javascript @tool @tool_monitor @tool_monitor_subscriptions
2 Feature: tool_monitor_subscriptions
3   In order to monitor events and receive notifications
4   As an user
5   I need to create a new rule, subscribe to it, receive notification and delete subscription
7   Background:
8     Given the following "courses" exist:
9       | fullname | shortname |
10       | Course 1 | C1        |
11       | Course 2 | C2        |
12     And the following "users" exist:
13       | username | firstname | lastname | email |
14       | teacher1 | Teacher | 1 | teacher1@example.com |
15       | teacher2 | Teacher | 2 | teacher2@example.com |
16     And the following "course enrolments" exist:
17       | user | course | role |
18       | teacher1 | C1 | editingteacher |
19       | teacher1 | C2 | teacher |
20       | teacher2 | C1 | teacher |
21       | teacher2 | C2 | editingteacher |
22     And I log in as "admin"
23     And I navigate to "Event monitoring rules" node in "Site administration > Reports"
24     And I click on "Enable" "link"
25     And I am on site homepage
26     And I follow "Course 1"
27     And I navigate to "Event monitoring rules" node in "Course administration > Reports"
28     And I press "Add a new rule"
29     And I set the following fields to these values:
30       | name                 | New rule course level                             |
31       | plugin               | Core                                              |
32       | eventname            | Course viewed                                     |
33       | id_description       | I want a rule to monitor when a course is viewed. |
34       | frequency            | 1                                                 |
35       | minutes              | 1                                                 |
36       | Notification message | The course was viewed. {modulelink}               |
37     And I press "Save changes"
38     And I navigate to "Event monitoring rules" node in "Site administration > Reports"
39     And I press "Add a new rule"
40     And I set the following fields to these values:
41       | name                 | New rule site level                               |
42       | plugin               | Core                                              |
43       | eventname            | Course viewed                                     |
44       | id_description       | I want a rule to monitor when a course is viewed. |
45       | frequency            | 1                                                 |
46       | minutes              | 1                                                 |
47       | Notification message | The course was viewed. {modulelink}               |
48     And I press "Save changes"
49     And I navigate to "Define roles" node in "Site administration > Users > Permissions"
50     And I follow "Non-editing teacher"
51     And I press "Edit"
52     And I click on "tool/monitor:managerules" "checkbox"
53     And I press "Save changes"
54     And I log out
56   Scenario: Subscribe to a rule on course level
57     Given I log in as "teacher1"
58     And I follow "Preferences" in the user menu
59     And I follow "Event monitoring"
60     And I set the field "Select a course" to "Course 1"
61     When I follow "Subscribe to rule \"New rule course level\""
62     Then I should see "Subscription successfully created"
63     And "#toolmonitorsubs_r0" "css_element" should exist
65   Scenario: Delete a subscription on course level
66     Given I log in as "teacher1"
67     And I follow "Preferences" in the user menu
68     And I follow "Event monitoring"
69     And I set the field "Select a course" to "Course 1"
70     And I follow "Subscribe to rule \"New rule course level\""
71     And I should see "Subscription successfully created"
72     When I click on "Delete subscription" "link" in the "New rule course level" "table_row"
73     And I should see "Are you sure you want to delete the subscription to the rule \"New rule course level\"?"
74     And I press "Continue"
75     Then I should see "Subscription successfully removed"
76     And "#toolmonitorsubs_r0" "css_element" should not exist
78   Scenario: Subscribe to a rule on site level
79     Given I log in as "admin"
80     And I follow "Preferences" in the user menu
81     And I follow "Event monitoring"
82     And I set the field "Select a course" to "Acceptance test site"
83     When I follow "Subscribe to rule \"New rule site level\""
84     Then I should see "Subscription successfully created"
85     And "#toolmonitorsubs_r0" "css_element" should exist
87   Scenario: Delete a subscription on site level
88     Given I log in as "admin"
89     And I follow "Preferences" in the user menu
90     And I follow "Event monitoring"
91     And I set the field "Select a course" to "Acceptance test site"
92     And I follow "Subscribe to rule \"New rule site level\""
93     And I should see "Subscription successfully created"
94     And "#toolmonitorsubs_r0" "css_element" should exist
95     When I click on "Delete subscription" "link" in the "New rule site level" "table_row"
96     And I should see "Are you sure you want to delete the subscription to the rule \"New rule site level\"?"
97     And I press "Continue"
98     Then I should see "Subscription successfully removed"
99     And "#toolmonitorsubs_r0" "css_element" should not exist
101   Scenario: Receiving notification on site level
102     Given I log in as "admin"
103     And I follow "Preferences" in the user menu
104     And I click on "Notification preferences" "link" in the "#page-content" "css_element"
105     And I click on ".preference-state" "css_element" in the "Notifications of rule subscriptions" "table_row"
106     And I wait until the page is ready
107     And I follow "Preferences" in the user menu
108     And I follow "Event monitoring"
109     And I set the field "Select a course" to "Acceptance test site"
110     And I follow "Subscribe to rule \"New rule site level\""
111     And I should see "Subscription successfully created"
112     And "#toolmonitorsubs_r0" "css_element" should exist
113     And I am on site homepage
114     And I trigger cron
115     And I am on site homepage
116     When I click on ".popover-region-notifications" "css_element"
117     And I click on "View more" "link" in the ".popover-region-notifications" "css_element"
118     Then I should see "New rule site level"
119     And I should see "The course was viewed"
121   Scenario: Receiving notification on course level
122     Given I log in as "teacher1"
123     And I follow "Preferences" in the user menu
124     And I click on "Notification preferences" "link" in the "#page-content" "css_element"
125     And I click on ".preference-state" "css_element" in the "Notifications of rule subscriptions" "table_row"
126     And I wait until the page is ready
127     And I follow "Preferences" in the user menu
128     And I follow "Event monitoring"
129     And I set the field "Select a course" to "Course 1"
130     And I follow "Subscribe to rule \"New rule course level\""
131     And I should see "Subscription successfully created"
132     And "#toolmonitorsubs_r0" "css_element" should exist
133     And I am on site homepage
134     And I follow "Course 1"
135     And I trigger cron
136     And I am on site homepage
137     When I click on ".popover-region-notifications" "css_element"
138     And I click on "View more" "link" in the ".popover-region-notifications" "css_element"
139     Then I should see "New rule course level"
140     And I should see "The course was viewed"
142   Scenario: Navigating via quick link to rules
143     Given I log in as "admin"
144     And I follow "Preferences" in the user menu
145     When I follow "Event monitoring"
146     And I set the field "Select a course" to "Course 1"
147     Then I should see "You can manage rules from the Event monitoring rules page."
148     And I follow "Event monitoring rules"
149     And I should see "You can subscribe to rules from the Event monitoring page."
150     And I log out
151     And I log in as "teacher1"
152     And I follow "Preferences" in the user menu
153     And I follow "Event monitoring"
154     And I set the field "Select a course" to "Course 1"
155     And I should see "You can manage rules from the Event monitoring rules page."
156     And I follow "Event monitoring rules"
157     And I should see "You can subscribe to rules from the Event monitoring page."
158     And I click on "//a[text()='Event monitoring']" "xpath_element"
159     And the field "courseid" matches value "Course 1"
160     And I follow "Preferences" in the user menu
161     And I follow "Event monitoring"
162     And I should not see "You can manage rules from the Event monitoring rules page."
163     And I log out
164     And I log in as "teacher2"
165     And I follow "Preferences" in the user menu
166     And I follow "Event monitoring"
167     And I set the field "Select a course" to "Course 1"
168     And I should not see "You can manage rules the from the Event monitoring rules page."
170   Scenario: No manage rules link when user does not have permission
171     Given I log in as "admin"
172     And I set the following system permissions of "Non-editing teacher" role:
173       | tool/monitor:managerules | Prohibit |
174     And I log out
175     And I log in as "teacher1"
176     And I follow "Preferences" in the user menu
177     And I follow "Event monitoring"
178     When I set the field "Select a course" to "Course 1"
179     Then I should see "You can manage rules from the Event monitoring rules page."
180     And I set the field "Select a course" to "Course 2"
181     And I should not see "You can manage rules from the Event monitoring rules page."
182     And I log out
183     And I log in as "teacher2"
184     And I follow "Preferences" in the user menu
185     And I follow "Event monitoring"
186     And I set the field "Select a course" to "Course 1"
187     And I should not see "You can manage rules from the Event monitoring rules page."
188     And I set the field "Select a course" to "Course 2"
189     And I should see "You can manage rules from the Event monitoring rules page."