--- /dev/null
+@core @core_course
+Feature: Activity navigation
+ In order to quickly switch between activities
+ As a user
+ I need to use the activity navigation controls in activities
+
+ Background:
+ Given the following "users" exist:
+ | username | firstname | lastname | email |
+ | teacher1 | Teacher | 1 | teacher1@example.com |
+ | student1 | Student | 1 | student1@example.com |
+ And the following "courses" exist:
+ | fullname | shortname | format |
+ | Course 1 | C1 | topics |
+ | Course 2 | C2 | topics |
+ And the following "course enrolments" exist:
+ | user | course | role |
+ | student1 | C1 | student |
+ | teacher1 | C1 | editingteacher |
+ | student1 | C2 | student |
+ And the following "activities" exist:
+ | activity | name | intro | course | idnumber | section |
+ | assign | Assignment 1 | Test assignment description | C1 | assign1 | 0 |
+ | book | Book 1 | Test book description | C1 | book1 | 0 |
+ | chat | Chat 1 | Test chat description | C1 | chat1 | 0 |
+ | choice | Choice 1 | Test choice description | C1 | choice1 | 1 |
+ | data | Database 1 | Test database description | C1 | data1 | 1 |
+ | feedback | Feedback 1 | Test feedback description | C1 | feedback1 | 1 |
+ | folder | Folder 1 | Test folder description | C1 | folder1 | 2 |
+ | forum | Forum 1 | Test forum description | C1 | forum1 | 2 |
+ | glossary | Glossary 1 | Test glossary description | C1 | glossary1 | 2 |
+ | imscp | Imscp 1 | Test imscp description | C1 | imscp1 | 3 |
+ | label | Label 1 | Test label description | C1 | label1 | 3 |
+ | lesson | Lesson 1 | Test lesson description | C1 | lesson1 | 3 |
+ | lti | Lti 1 | Test lti description | C1 | lti1 | 4 |
+ | page | Page 1 | Test page description | C1 | page1 | 4 |
+ | quiz | Quiz 1 | Test quiz description | C1 | quiz1 | 4 |
+ | resource | Resource 1 | Test resource description | C1 | resource1 | 5 |
+ | scorm | Scorm 1 | Test scorm description | C1 | scorm1 | 5 |
+ | survey | Survey 1 | Test survey description | C1 | survey1 | 5 |
+ | url | Url 1 | Test url description | C1 | url1 | 6 |
+ | wiki | Wiki 1 | Test wiki description | C1 | wiki1 | 6 |
+ | workshop | Workshop 1 | Test workshop description | C1 | workshop1 | 6 |
+ | assign | Assignment 1 | Test assignment description | C2 | assign21 | 0 |
+ And I log in as "admin"
+ And I set the following administration settings values:
+ | allowstealth | 1 |
+ And I am on "Course 1" course homepage with editing mode on
+ # Stealth activity.
+ And I click on "Hide" "link" in the "Forum 1" activity
+ And I click on "Make available" "link" in the "Forum 1" activity
+ # Hidden activity.
+ And I click on "Hide" "link" in the "Glossary 1" activity
+ # Hidden section.
+ And I hide section "5"
+ # Set up book.
+ And I follow "Book 1"
+ And I should see "Add new chapter"
+ And I set the following fields to these values:
+ | Chapter title | Chapter 1 |
+ | Content | In the beginning... blah, blah, blah. |
+ And I press "Save changes"
+ And I log out
+
+ Scenario: Step through activities in the course as a teacher.
+ Given I log in as "teacher1"
+ And I am on "Course 1" course homepage
+ When I follow "Assignment 1"
+ # The first activity won't have the previous activity link.
+ Then "#prev-activity-link" "css_element" should not exist
+ And I should see "Book 1" in the "#next-activity-link" "css_element"
+ And I follow "Book 1"
+ And I should see "Assignment" in the "#prev-activity-link" "css_element"
+ And I should see "Chat 1" in the "#next-activity-link" "css_element"
+ And I follow "Chat 1"
+ And I should see "Book 1" in the "#prev-activity-link" "css_element"
+ And I should see "Choice 1" in the "#next-activity-link" "css_element"
+ And I follow "Choice 1"
+ And I should see "Chat 1" in the "#prev-activity-link" "css_element"
+ And I should see "Database 1" in the "#next-activity-link" "css_element"
+ And I follow "Database 1"
+ And I should see "Choice 1" in the "#prev-activity-link" "css_element"
+ And I should see "Feedback 1" in the "#next-activity-link" "css_element"
+ And I follow "Feedback 1"
+ And I should see "Database 1" in the "#prev-activity-link" "css_element"
+ # The next link will be Folder 1 because Forum 1 is in stealth mode.
+ And I should see "Folder 1" in the "#next-activity-link" "css_element"
+ And I follow "Folder 1"
+ And I should see "Feedback 1" in the "#prev-activity-link" "css_element"
+ # Hidden activity will have a '(hidden)' text within the activity link.
+ And I should see "Glossary 1 (hidden)" in the "#next-activity-link" "css_element"
+ And I follow "Glossary 1 (hidden)"
+ And I should see "Folder 1" in the "#prev-activity-link" "css_element"
+ And I should see "Imscp 1" in the "#next-activity-link" "css_element"
+ And I follow "Imscp 1"
+ And I should see "Glossary 1" in the "#prev-activity-link" "css_element"
+ # The next link will be Lesson 1 because Label 1 doesn't have a view URL.
+ And I should see "Lesson 1" in the "#next-activity-link" "css_element"
+ And I follow "Lesson 1"
+ And I should see "Imscp 1" in the "#prev-activity-link" "css_element"
+ And I should see "Lti 1" in the "#next-activity-link" "css_element"
+ And I follow "Lti 1"
+ And I should see "Lesson 1" in the "#prev-activity-link" "css_element"
+ And I should see "Page 1" in the "#next-activity-link" "css_element"
+ And I follow "Page 1"
+ And I should see "Lti 1" in the "#prev-activity-link" "css_element"
+ And I should see "Quiz 1" in the "#next-activity-link" "css_element"
+ And I follow "Quiz 1"
+ And I should see "Page 1" in the "#prev-activity-link" "css_element"
+ # Hidden sections will have the activities render with the '(hidden)' text.
+ And I should see "Resource 1 (hidden)" in the "#next-activity-link" "css_element"
+ And I follow "Resource 1 (hidden)"
+ And I should see "Quiz 1" in the "#prev-activity-link" "css_element"
+ And I should see "Scorm 1 (hidden)" in the "#next-activity-link" "css_element"
+ And I follow "Scorm 1 (hidden)"
+ And I should see "Resource 1 (hidden)" in the "#prev-activity-link" "css_element"
+ And I should see "Survey 1 (hidden)" in the "#next-activity-link" "css_element"
+ And I follow "Survey 1 (hidden)"
+ And I should see "Scorm 1 (hidden)" in the "#prev-activity-link" "css_element"
+ And I should see "Url 1" in the "#next-activity-link" "css_element"
+ And I follow "Url 1"
+ And I should see "Survey 1 (hidden)" in the "#prev-activity-link" "css_element"
+ And I should see "Wiki 1" in the "#next-activity-link" "css_element"
+ And I follow "Wiki 1"
+ And I should see "Url 1" in the "#prev-activity-link" "css_element"
+ And I should see "Workshop 1" in the "#next-activity-link" "css_element"
+ And I follow "Workshop 1"
+ And I should see "Wiki 1" in the "#prev-activity-link" "css_element"
+ # The last activity won't have the next activity link.
+ And "#next-activity-link" "css_element" should not exist
+
+ Scenario: Step through activities in the course as a student.
+ Given I log in as "student1"
+ And I am on "Course 1" course homepage
+ When I follow "Assignment 1"
+ # The first activity won't have the previous activity link.
+ Then "#prev-activity-link" "css_element" should not exist
+ And I should see "Book 1" in the "#next-activity-link" "css_element"
+ And I follow "Book 1"
+ And I should see "Assignment" in the "#prev-activity-link" "css_element"
+ And I should see "Chat 1" in the "#next-activity-link" "css_element"
+ And I follow "Chat 1"
+ And I should see "Book 1" in the "#prev-activity-link" "css_element"
+ And I should see "Choice 1" in the "#next-activity-link" "css_element"
+ And I follow "Choice 1"
+ And I should see "Chat 1" in the "#prev-activity-link" "css_element"
+ And I should see "Database 1" in the "#next-activity-link" "css_element"
+ And I follow "Database 1"
+ And I should see "Choice 1" in the "#prev-activity-link" "css_element"
+ And I should see "Feedback 1" in the "#next-activity-link" "css_element"
+ And I follow "Feedback 1"
+ And I should see "Database 1" in the "#prev-activity-link" "css_element"
+ # The next link will be Folder 1 because Forum 1 is in stealth mode.
+ And I should see "Folder 1" in the "#next-activity-link" "css_element"
+ And I follow "Folder 1"
+ And I should see "Feedback 1" in the "#prev-activity-link" "css_element"
+ # The next link will be Imscp 1 because hidden activities are not shown to students.
+ And I should see "Imscp 1" in the "#next-activity-link" "css_element"
+ And I follow "Imscp 1"
+ And I should see "Folder 1" in the "#prev-activity-link" "css_element"
+ # The next link will be Lesson 1 because Label 1 doesn't have a view URL.
+ And I should see "Lesson 1" in the "#next-activity-link" "css_element"
+ And I follow "Lesson 1"
+ And I should see "Imscp 1" in the "#prev-activity-link" "css_element"
+ And I should see "Lti 1" in the "#next-activity-link" "css_element"
+ And I follow "Lti 1"
+ And I should see "Lesson 1" in the "#prev-activity-link" "css_element"
+ And I should see "Page 1" in the "#next-activity-link" "css_element"
+ And I follow "Page 1"
+ And I should see "Lti 1" in the "#prev-activity-link" "css_element"
+ And I should see "Quiz 1" in the "#next-activity-link" "css_element"
+ And I follow "Quiz 1"
+ And I should see "Page 1" in the "#prev-activity-link" "css_element"
+ # Hidden sections will have the activities hidden so the links won't be available to students.
+ And I should see "Url 1" in the "#next-activity-link" "css_element"
+ And I follow "Url 1"
+ And I should see "Quiz 1" in the "#prev-activity-link" "css_element"
+ And I should see "Wiki 1" in the "#next-activity-link" "css_element"
+ And I follow "Wiki 1"
+ And I should see "Url 1" in the "#prev-activity-link" "css_element"
+ And I should see "Workshop 1" in the "#next-activity-link" "css_element"
+ And I follow "Workshop 1"
+ And I should see "Wiki 1" in the "#prev-activity-link" "css_element"
+ # The last activity won't have the next activity link.
+ And "#next-activity-link" "css_element" should not exist
+
+ Scenario: Jump to another activity as a teacher
+ Given I log in as "teacher1"
+ When I am on "Course 1" course homepage
+ And I follow "Assignment 1"
+ Then "Jump to..." "field" should exist
+ # The current activity will not be listed.
+ And the "Jump to..." select box should not contain "Assignment 1"
+ # Stealth activities will not be listed.
+ And the "Jump to..." select box should not contain "Forum 1"
+ # Resources without view URL (e.g. labels) will not be listed.
+ And the "Jump to..." select box should not contain "Label 1"
+ # Check drop down menu contents.
+ And the "Jump to..." select box should contain "Book 1"
+ And the "Jump to..." select box should contain "Chat 1"
+ And the "Jump to..." select box should contain "Choice 1"
+ And the "Jump to..." select box should contain "Database 1"
+ And the "Jump to..." select box should contain "Feedback 1"
+ And the "Jump to..." select box should contain "Folder 1"
+ And the "Jump to..." select box should contain "Imscp 1"
+ And the "Jump to..." select box should contain "Lesson 1"
+ And the "Jump to..." select box should contain "Lti 1"
+ And the "Jump to..." select box should contain "Page 1"
+ And the "Jump to..." select box should contain "Quiz 1"
+ And the "Jump to..." select box should contain "Url 1"
+ And the "Jump to..." select box should contain "Wiki 1"
+ And the "Jump to..." select box should contain "Workshop 1"
+ # Hidden activities will be rendered with a '(hidden)' text.
+ And the "Jump to..." select box should contain "Glossary 1 (hidden)"
+ # Activities in hidden sections will be rendered with a '(hidden)' text.
+ And the "Jump to..." select box should contain "Resource 1 (hidden)"
+ And the "Jump to..." select box should contain "Scorm 1 (hidden)"
+ And the "Jump to..." select box should contain "Survey 1 (hidden)"
+ # Jump to an activity somewhere in the middle.
+ When I select "Page 1" from the "Jump to..." singleselect
+ Then I should see "Page 1"
+ And I should see "Lti 1" in the "#prev-activity-link" "css_element"
+ And I should see "Quiz 1" in the "#next-activity-link" "css_element"
+ # Jump to the first activity.
+ And I select "Assignment 1" from the "Jump to..." singleselect
+ And I should see "Book 1" in the "#next-activity-link" "css_element"
+ But "#prev-activity-link" "css_element" should not exist
+ # Jump to the last activity.
+ And I select "Workshop 1" from the "Jump to..." singleselect
+ And I should see "Wiki 1" in the "#prev-activity-link" "css_element"
+ But "#next-activity-link" "css_element" should not exist
+ # Jump to a hidden activity.
+ And I select "Glossary 1" from the "Jump to..." singleselect
+ And I should see "Folder 1" in the "#prev-activity-link" "css_element"
+ And I should see "Imscp 1" in the "#next-activity-link" "css_element"
+
+ Scenario: Jump to another activity as a student
+ Given I log in as "student1"
+ And I am on "Course 1" course homepage
+ And I follow "Assignment 1"
+ And "Jump to..." "field" should exist
+ # The current activity will not be listed.
+ And the "Jump to..." select box should not contain "Assignment 1"
+ # Stealth activities will not be listed for students.
+ And the "Jump to..." select box should not contain "Forum 1"
+ # Resources without view URL (e.g. labels) will not be listed.
+ And the "Jump to..." select box should not contain "Label 1"
+ # Hidden activities will not be listed for students.
+ And the "Jump to..." select box should not contain "Glossary 1"
+ # Activities in hidden sections will not be listed for students.
+ And the "Jump to..." select box should not contain "Resource 1"
+ And the "Jump to..." select box should not contain "Scorm 1"
+ And the "Jump to..." select box should not contain "Survey 1"
+ # Only activities visible to students will be listed.
+ And the "Jump to..." select box should contain "Book 1"
+ And the "Jump to..." select box should contain "Chat 1"
+ And the "Jump to..." select box should contain "Choice 1"
+ And the "Jump to..." select box should contain "Database 1"
+ And the "Jump to..." select box should contain "Feedback 1"
+ And the "Jump to..." select box should contain "Folder 1"
+ And the "Jump to..." select box should contain "Imscp 1"
+ And the "Jump to..." select box should contain "Lesson 1"
+ And the "Jump to..." select box should contain "Lti 1"
+ And the "Jump to..." select box should contain "Page 1"
+ And the "Jump to..." select box should contain "Quiz 1"
+ And the "Jump to..." select box should contain "Url 1"
+ And the "Jump to..." select box should contain "Wiki 1"
+ And the "Jump to..." select box should contain "Workshop 1"
+ # Jump to an activity somewhere in the middle.
+ When I select "Page 1" from the "Jump to..." singleselect
+ Then I should see "Page 1"
+ And I should see "Lti 1" in the "#prev-activity-link" "css_element"
+ And I should see "Quiz 1" in the "#next-activity-link" "css_element"
+ # Jump to the first activity.
+ And I select "Assignment 1" from the "Jump to..." singleselect
+ And I should see "Book 1" in the "#next-activity-link" "css_element"
+ But "#prev-activity-link" "css_element" should not exist
+ # Jump to the last activity.
+ And I select "Workshop 1" from the "Jump to..." singleselect
+ And I should see "Wiki 1" in the "#prev-activity-link" "css_element"
+ But "#next-activity-link" "css_element" should not exist
+
+ Scenario: Open an activity in a course that only has a single activity
+ Given I log in as "student1"
+ And I am on "Course 2" course homepage
+ And I follow "Assignment 1"
+ Then "#prev-activity-link" "css_element" should not exist
+ And "#next-activity-link" "css_element" should not exist
+ And "Jump to..." "field" should not exist
--- /dev/null
+@core @core_course
+Feature: Activity navigation involving activities with access restrictions
+ In order to quickly switch to another activity that has access restrictions
+ As a student
+ I need to be able to use the activity navigation feature to access the activity after satisfying its access conditions
+
+ Background:
+ Given the following "users" exist:
+ | username | firstname | lastname | email |
+ | teacher1 | Teacher | 1 | teacher1@example.com |
+ | student1 | Student | 1 | student1@example.com |
+ And the following "courses" exist:
+ | fullname | shortname | format | enablecompletion |
+ | Course 1 | C1 | topics | 1 |
+ And the following "course enrolments" exist:
+ | user | course | role |
+ | student1 | C1 | student |
+ | teacher1 | C1 | editingteacher |
+ And the following "activities" exist:
+ | activity | name | intro | course | idnumber | section |
+ | page | Page 1 | Test page description 1 | C1 | page1 | 0 |
+ | page | Page 2 | Test page description 2 | C1 | page2 | 0 |
+ | page | Page 3 | Test page description 3 | C1 | page3 | 0 |
+ | page | Page 4 | Test page description 4 | C1 | page4 | 0 |
+ And I log in as "teacher1"
+ And I am on "Course 1" course homepage with editing mode on
+ # Set completion for Page 2.
+ And I open "Page 2" actions menu
+ And I click on "Edit settings" "link" in the "Page 2" activity
+ And I expand all fieldsets
+ And I set the field "Completion tracking" to "Show activity as complete when conditions are met"
+ And I set the following fields to these values:
+ | Completion tracking | Show activity as complete when conditions are met |
+ | Require view | 1 |
+ And I press "Save and return to course"
+ # Require Page 2 to be completed first before Page 3 can be accessed.
+ And I open "Page 3" actions menu
+ And I click on "Edit settings" "link" in the "Page 3" activity
+ And I expand all fieldsets
+ And I click on "Add restriction..." "button"
+ And I click on "Activity completion" "button" in the "Add restriction..." "dialogue"
+ And I set the field "Activity or resource" to "Page 2"
+ And I press "Save and return to course"
+ And I log out
+
+ @javascript
+ Scenario: Activity navigation involving activities with access restrictions
+ Given I log in as "student1"
+ And I am on "Course 1" course homepage
+ When I follow "Page 1"
+ Then I should see "Page 2" in the "#next-activity-link" "css_element"
+ # Activity that has access restriction should not show up in the dropdown.
+ And the "Jump to..." select box should not contain "Page 3"
+ And I select "Page 4" from the "Jump to..." singleselect
+ # Page 2 should be shown in the previous link since Page 3 is not yet available.
+ And I should see "Page 2" in the "#prev-activity-link" "css_element"
+ And the "Jump to..." select box should not contain "Page 3"
+ # Navigate to Page 2.
+ And I follow "Page 2"
+ # Since Page 2 has now been viewed and deemed completed, Page 3 can now be accessed.
+ And I should see "Page 3" in the "#next-activity-link" "css_element"
+ And the "Jump to..." select box should contain "Page 3"