From 85437c91f8c3a3095d0c53334319b2c5f03de554 Mon Sep 17 00:00:00 2001 From: Jun Pataleta Date: Mon, 31 Jul 2017 19:05:11 +0800 Subject: [PATCH 1/1] MDL-59614 course: Behat tests for activity navigation Part of MDL-59313. --- .../tests/behat/activity_navigation.feature | 289 ++++++++++++++++++ ...ivity_navigation_with_restrictions.feature | 62 ++++ 2 files changed, 351 insertions(+) create mode 100644 course/tests/behat/activity_navigation.feature create mode 100644 course/tests/behat/activity_navigation_with_restrictions.feature diff --git a/course/tests/behat/activity_navigation.feature b/course/tests/behat/activity_navigation.feature new file mode 100644 index 00000000000..dff44351b0a --- /dev/null +++ b/course/tests/behat/activity_navigation.feature @@ -0,0 +1,289 @@ +@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 diff --git a/course/tests/behat/activity_navigation_with_restrictions.feature b/course/tests/behat/activity_navigation_with_restrictions.feature new file mode 100644 index 00000000000..e8b44efb71e --- /dev/null +++ b/course/tests/behat/activity_navigation_with_restrictions.feature @@ -0,0 +1,62 @@ +@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" -- 2.43.0