2 Feature: Manage course tools
3 In order to provide richer experiences for learners
5 I need to be able to add external tools to a course
8 Given the following "users" exist:
9 | username | firstname | lastname | email |
10 | teacher1 | Terry1 | Teacher1 | teacher1@example.com |
11 And the following "course" exists:
12 | fullname | Course 1 |
17 And the following "course enrolments" exist:
18 | user | course | role |
19 | teacher1 | C1 | editingteacher |
20 And the following config values are set as admin:
21 | enableasyncbackup | 0 |
23 Scenario: Create a course tool from the zero state
24 Given I am on the "Course 1" course page logged in as teacher1
25 And I navigate to "LTI External tools" in current page administration
26 And I should see "LTI External tools are add-on apps"
27 And I should see "There are no LTI External tools yet."
28 When I click on "Add tool" "link"
30 Then I should see "LTI External tools are add-on apps"
31 And I should see "There are no LTI External tools yet."
32 And I click on "Add tool" "link"
33 And I set the following fields to these values:
34 | Tool name | Teaching Tool 1 |
35 | Tool URL | http://example.com |
36 | Tool description | A short description of the tool |
37 And I press "Save changes"
38 And I should see "Teaching Tool 1 added"
39 And I should see "A short description of the tool" in the "Teaching Tool 1" "table_row"
41 Scenario: Viewing a site level tool in the course tools table
42 # The first tool isn't visible in courses, the next two are, and the last tool is in a pending state and is not visible.
43 Given the following "mod_lti > tool types" exist:
44 | name | description | baseurl | coursevisible | state |
45 | Example tool | Another description | https://example.com/tool1 | 0 | 1 |
46 | Test tool 2 | Tool2 description | https://example.com/tool2 | 1 | 1 |
47 | Test tool 3 | Tool3 description | https://example.com/tool3 | 2 | 1 |
48 | Test tool 4 | Tool4 description | https://example.com/tool4 | 2 | 2 |
49 And I am on the "Course 1" course page logged in as teacher1
50 When I navigate to "LTI External tools" in current page administration
51 Then I should see "Test tool 2" in the "reportbuilder-table" "table"
52 And "You don't have permission to edit this tool" "icon" should exist in the "Test tool 2" "table_row"
53 And I should see "Test tool 3" in the "reportbuilder-table" "table"
54 And "You don't have permission to edit this tool" "icon" should exist in the "Test tool 3" "table_row"
55 And I should not see "Example tool" in the "reportbuilder-table" "table"
56 And I should not see "Test tool 4" in the "reportbuilder-table" "table"
58 Scenario: Viewing course tools without the capability to add/edit but having the capability to use
59 Given the following "role capability" exists:
60 | role | editingteacher |
61 | mod/lti:addcoursetool | prohibit |
62 | mod/lti:addpreconfiguredinstance | allow |
63 And the following "mod_lti > course tools" exist:
64 | name | description | baseurl | course |
65 | Test tool | Example description | https://example.com/tool | C1 |
66 And I am on the "Course 1" course page logged in as teacher1
67 When I navigate to "LTI External tools" in current page administration
68 Then "You don't have permission to edit this tool" "icon" should exist in the "Test tool" "table_row"
70 Scenario: Viewing course tools with the capability to add/edit and without the capability to use
71 Given the following "role capability" exists:
72 | role | editingteacher |
73 | mod/lti:addcoursetool | allow |
74 | mod/lti:addpreconfiguredinstance | prohibit |
75 And the following "mod_lti > course tools" exist:
76 | name | description | baseurl | course |
77 | Test tool | Example description | https://example.com/tool | C1 |
78 When I am on the "Course 1" course page logged in as teacher1
79 Then "LTI External tools" "link" should not exist in current page administration
82 Scenario: Edit a course tool
83 Given the following "mod_lti > course tools" exist:
84 | name | description | baseurl | course |
85 | Test tool | Example description | https://example.com/tool | C1 |
86 And I am on the "Course 1" course page logged in as teacher1
87 And I navigate to "LTI External tools" in current page administration
88 And the "Edit" item should exist in the "Actions" action menu of the "Test tool" "table_row"
89 And the "Delete" item should exist in the "Actions" action menu of the "Test tool" "table_row"
90 When I open the action menu in "Test tool" "table_row"
91 And I choose "Edit" in the open action menu
93 Then I should see "Test tool" in the "reportbuilder-table" "table"
94 And I open the action menu in "Test tool" "table_row"
95 And I choose "Edit" in the open action menu
96 And I set the following fields to these values:
97 | Tool name | Test tool (edited) |
98 | Tool URL | http://example.com |
99 | Tool description | A short description of the tool (edited) |
100 And I press "Save changes"
101 And I should see "Changes saved"
102 And I should see "A short description of the tool (edited)" in the "Test tool (edited)" "table_row"
105 Scenario: Navigate through the listing of course tools
106 Given 20 "mod_lti > course tools" exist with the following data:
107 | name | Test tool [count] |
108 | description | Example description [count] |
109 | baseurl | https://www.example.com/tool[count] |
111 And I am on the "Course 1" course page logged in as teacher1
112 When I navigate to "LTI External tools" in current page administration
113 Then I should see "Test tool 1" in the "reportbuilder-table" "table"
114 And I click on "Name" "link"
115 And I should see "Test tool 20" in the "reportbuilder-table" "table"
116 And I click on "2" "link" in the "page" "region"
117 And I should see "Test tool 1" in the "reportbuilder-table" "table"
120 Scenario: Delete a course tool
121 Given the following "mod_lti > course tools" exist:
122 | name | description | baseurl | course |
123 | Test tool | Example description | https://example.com/tool | C1 |
124 | Another tool | Example 123 | https://another.example.com/tool | C1 |
125 And I am on the "Course 1" course page logged in as teacher1
126 And I navigate to "LTI External tools" in current page administration
127 When I open the action menu in "Test tool" "table_row"
128 And I choose "Delete" in the open action menu
129 Then I should see "This will delete Test tool from the available LTI tools in your course."
130 And I click on "Cancel" "button" in the "Delete Test tool" "dialogue"
131 And I should see "Test tool" in the "reportbuilder-table" "table"
132 And I open the action menu in "Test tool" "table_row"
133 And I choose "Delete" in the open action menu
134 And I should see "This will delete Test tool from the available LTI tools in your course."
135 And I click on "Delete" "button" in the "Delete Test tool" "dialogue"
136 And I should see "Test tool deleted"
137 And I should not see "Test tool" in the "reportbuilder-table" "table"
140 Scenario: Add a course tool using a cartridge URL
141 Given I am on the "Course 1" course page logged in as teacher1
142 And I navigate to "LTI External tools" in current page administration
143 When I click on "Add tool" "link"
144 And I set the following fields to these values:
145 | Tool name | Test tool 1 |
146 | Tool description | Test tool 1 description |
147 And I set the field "Tool URL" to local url "/mod/lti/tests/fixtures/ims_cartridge_basic_lti_link.xml"
148 And I press "Save changes"
149 Then I should see "Test tool 1" in the "reportbuilder-table" "table"
150 # The cartridge description, if set, overrides the description set in the type edit form (bug?).
151 And I should see "Example tool description" in the "Test tool 1" "table_row"
152 And I open the action menu in "Test tool 1" "table_row"
153 And I choose "Edit" in the open action menu
154 And the field "Tool name" matches value "Test tool 1"
155 And the field "Tool URL" matches value "http://www.example.com/lti/provider.php"
156 And the field "Icon URL" matches value "http://download.moodle.org/unittest/test.jpg"
157 And the field "Secure icon URL" matches value "https://download.moodle.org/unittest/test.jpg"
160 Scenario: Site tool appearing in activity chooser according to settings
161 Given the following "mod_lti > tool types" exist:
162 | name | baseurl | coursevisible | state |
163 | Teaching Tool 1 | /mod/lti/tests/fixtures/tool_provider.php | 2 | 1 |
164 | Teaching Tool 2 | /mod/lti/tests/fixtures/tool_provider.php | 1 | 1 |
165 | Teaching Tool 3 | /mod/lti/tests/fixtures/tool_provider.php | 0 | 1 |
166 And the following "courses" exist:
167 | fullname | shortname | category |
168 | Course 2 | C2 | 0 |
169 And the following "course enrolments" exist:
170 | user | course | role |
171 | teacher1 | C2 | editingteacher |
172 And I log in as "teacher1"
173 And I am on "Course 1" course homepage with editing mode on
174 And I click on "Add an activity or resource" "button" in the "New section" "section"
175 And I should see "Teaching Tool 1" in the ".modal-body" "css_element"
176 And I should not see "Teaching Tool 2" in the ".modal-body" "css_element"
177 And I should not see "Teaching Tool 3" in the ".modal-body" "css_element"
178 And I click on "Close" "button" in the ".modal-dialog" "css_element"
179 And I navigate to "LTI External tools" in current page administration
180 And I should not see "Teaching Tool 3"
181 And I click on "Don't show in activity chooser" "field" in the "Teaching Tool 1" "table_row"
182 And I click on "Show in activity chooser" "field" in the "Teaching Tool 2" "table_row"
183 And I am on "Course 1" course homepage
184 And I click on "Add an activity or resource" "button" in the "New section" "section"
185 And I should not see "Teaching Tool 1" in the ".modal-body" "css_element"
186 And I should see "Teaching Tool 2" in the ".modal-body" "css_element"
187 And I should not see "Teaching Tool 3" in the ".modal-body" "css_element"
188 And I click on "Close" "button" in the ".modal-dialog" "css_element"
190 # Should not affect other courses.
191 And I am on "Course 2" course homepage
192 And I click on "Add an activity or resource" "button" in the "New section" "section"
193 And I should see "Teaching Tool 1" in the ".modal-body" "css_element"
194 And I should not see "Teaching Tool 2" in the ".modal-body" "css_element"
195 And I should not see "Teaching Tool 3" in the ".modal-body" "css_element"
196 And I click on "Close" "button" in the ".modal-dialog" "css_element"
198 And I am on "Course 1" course homepage
199 And I navigate to "LTI External tools" in current page administration
200 And I click on "Show in activity chooser" "field" in the "Teaching Tool 1" "table_row"
201 And I click on "Don't show in activity chooser" "field" in the "Teaching Tool 2" "table_row"
202 And I am on "Course 1" course homepage
203 And I click on "Add an activity or resource" "button" in the "New section" "section"
204 And I should see "Teaching Tool 1" in the ".modal-body" "css_element"
205 And I should not see "Teaching Tool 2" in the ".modal-body" "css_element"
206 And I should not see "Teaching Tool 3" in the ".modal-body" "css_element"
208 When the following "role capability" exists:
209 | role | editingteacher |
210 | mod/lti:addcoursetool | prohibit |
211 And I am on "Course 1" course homepage with editing mode on
212 And I navigate to "LTI External tools" in current page administration
213 Then the "Don't show in activity chooser" "field" should be disabled
214 And the "Show in activity chooser" "field" should be disabled
217 Scenario: Course tool appearing in activity chooser according to settings
218 Given the following "mod_lti > course tools" exist:
219 | name | baseurl | course | coursevisible |
220 | Course Tool 1 | /mod/lti/tests/fixtures/tool_provider.php | C1 | 2 |
221 | Course Tool 2 | /mod/lti/tests/fixtures/tool_provider.php | C1 | 1 |
222 And I log in as "teacher1"
223 And I am on "Course 1" course homepage with editing mode on
224 And I click on "Add an activity or resource" "button" in the "New section" "section"
225 And I should see "Course Tool 1" in the ".modal-body" "css_element"
226 And I should not see "Course Tool 2" in the ".modal-body" "css_element"
227 And I click on "Close" "button" in the ".modal-dialog" "css_element"
228 And I navigate to "LTI External tools" in current page administration
229 And I click on "Don't show in activity chooser" "field" in the "Course Tool 1" "table_row"
230 And I click on "Show in activity chooser" "field" in the "Course Tool 2" "table_row"
231 And I am on "Course 1" course homepage
232 And I click on "Add an activity or resource" "button" in the "New section" "section"
233 And I should not see "Course Tool 1" in the ".modal-body" "css_element"
234 And I should see "Course Tool 2" in the ".modal-body" "css_element"
235 And I click on "Close" "button" in the ".modal-dialog" "css_element"
236 And I navigate to "LTI External tools" in current page administration
237 And I click on "Show in activity chooser" "field" in the "Course Tool 1" "table_row"
238 And I click on "Don't show in activity chooser" "field" in the "Course Tool 2" "table_row"
239 And I am on "Course 1" course homepage
240 And I click on "Add an activity or resource" "button" in the "New section" "section"
241 And I should see "Course Tool 1" in the ".modal-body" "css_element"
242 And I should not see "Course Tool 2" in the ".modal-body" "css_element"
244 When the following "role capability" exists:
245 | role | editingteacher |
246 | mod/lti:addcoursetool | prohibit |
247 And I am on "Course 1" course homepage with editing mode on
248 And I navigate to "LTI External tools" in current page administration
249 Then the "Don't show in activity chooser" "field" should be disabled
250 And the "Show in activity chooser" "field" should be disabled
253 Scenario: Site and course tools settings are preserved when backup and restore
254 Given the following "mod_lti > tool types" exist:
255 | name | baseurl | coursevisible | state |
256 | Teaching Tool 1 | /mod/lti/tests/fixtures/tool_provider.php | 2 | 1 |
257 | Teaching Tool 2 | /mod/lti/tests/fixtures/tool_provider.php | 1 | 1 |
258 And the following "mod_lti > course tools" exist:
259 | name | description | baseurl | course |
260 | Course Tool 1 | Example description | https://example.com/tool | C1 |
261 And I log in as "admin"
262 And I am on "Course 1" course homepage with editing mode on
263 And I add a "Teaching Tool 1" to section "1" using the activity chooser
264 And I set the field "Activity name" to "Test tool activity 1"
265 And I press "Save and return to course"
266 And I add a "Course Tool 1" to section "1" using the activity chooser
267 And I set the field "Activity name" to "Course tool activity 1"
268 And I press "Save and return to course"
269 And I navigate to "LTI External tools" in current page administration
270 And I click on "Don't show in activity chooser" "field" in the "Teaching Tool 1" "table_row"
271 And I click on "Show in activity chooser" "field" in the "Teaching Tool 2" "table_row"
272 And I click on "Don't show in activity chooser" "field" in the "Course Tool 1" "table_row"
273 And I am on "Course 1" course homepage
274 And I add a "Teaching Tool 2" to section "1" using the activity chooser
275 And I set the field "Activity name" to "Test tool activity 2"
276 And I press "Save and return to course"
277 When I backup "Course 1" course using this options:
278 | Confirmation | Filename | test_backup.mbz |
279 And I restore "test_backup.mbz" backup into a new course using this options:
280 | Schema | Course name | Restored course |
281 And I should see "Restored course"
282 And I click on "Add an activity or resource" "button" in the "General" "section"
283 Then I should not see "Teaching Tool 1" in the ".modal-body" "css_element"
284 And I should see "Teaching Tool 2" in the ".modal-body" "css_element"
285 And I should not see "Course Tool 2" in the ".modal-body" "css_element"
286 And I click on "Close" "button" in the ".modal-dialog" "css_element"
287 And I navigate to "LTI External tools" in current page administration
288 And I should see "Show in activity chooser" in the "Teaching Tool 1" "table_row"
289 And I should see "Don't show in activity chooser" in the "Teaching Tool 2" "table_row"
290 And I should see "Show in activity chooser" in the "Course Tool 1" "table_row"