mirror of
https://github.com/moodle/moodle.git
synced 2025-03-03 07:19:09 +01:00
This is to be consistent with places like forum and book, where if we have a next link, we also have a previous link. At the same time I have amended the links/buttons from 'Previous'/'Next' to 'Previous page'/'Next page' because I think that is clearer. Also, on the last page of the quiz, I have changed 'Next' to 'Finish attempt ...' for consistency with the link in the navigation block. AMOS BEGIN CPY [navigatenext,mod_assignment],[navigatenext,mod_quiz] CPY [navigateprevious,mod_assignment],[navigateprevious,mod_quiz] AMOS END
253 lines
12 KiB
Gherkin
253 lines
12 KiB
Gherkin
@mod @mod_quiz
|
|
Feature: Attemp a quiz where some questions require that the previous question has been answered.
|
|
In order to complete a quiz where questions require previous ones to be complete
|
|
As a student
|
|
I need later questions to appear once earlier ones have been answered.
|
|
|
|
Background:
|
|
Given the following "users" exist:
|
|
| username | firstname | lastname | email |
|
|
| student | Student | One | student@example.com |
|
|
| teacher | Teacher | One | teacher@example.com |
|
|
And the following "courses" exist:
|
|
| fullname | shortname | category |
|
|
| Course 1 | C1 | 0 |
|
|
And the following "course enrolments" exist:
|
|
| user | course | role |
|
|
| student | C1 | student |
|
|
| teacher | C1 | teacher |
|
|
And the following "question categories" exist:
|
|
| contextlevel | reference | name |
|
|
| Course | C1 | Test questions |
|
|
|
|
@javascript
|
|
Scenario: A question that requires the previous one is initally blocked
|
|
Given the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | truefalse | TF1 | First question |
|
|
| Test questions | truefalse | TF2 | Second question |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber | preferredbehaviour |
|
|
| quiz | Quiz 1 | Quiz 1 description | C1 | quiz1 | immediatefeedback |
|
|
And quiz "Quiz 1" contains the following questions:
|
|
| question | page | requireprevious |
|
|
| TF1 | 1 | 0 |
|
|
| TF2 | 1 | 1 |
|
|
|
|
When I log in as "student"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I press "Attempt quiz now"
|
|
|
|
Then I should see "First question"
|
|
And I should see "This question cannot be attempted until the previous question has been completed."
|
|
And I should not see "Second question"
|
|
And I log out
|
|
And I log in as "teacher"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I follow "Attempts: 1"
|
|
And I follow "Review attempt"
|
|
And I should see "First question"
|
|
And I should see "This question cannot be attempted until the previous question has been completed."
|
|
And I should not see "Second question"
|
|
And "Question 1" "link" should exist
|
|
And "Question 2" "link" should not exist
|
|
|
|
@javascript
|
|
Scenario: A question requires the previous one becomes available when the first one is answered
|
|
Given the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | truefalse | TF1 | First question |
|
|
| Test questions | truefalse | TF2 | Second question |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber | preferredbehaviour |
|
|
| quiz | Quiz 1 | Quiz 1 description | C1 | quiz1 | immediatefeedback |
|
|
And quiz "Quiz 1" contains the following questions:
|
|
| question | page | requireprevious |
|
|
| TF1 | 1 | 0 |
|
|
| TF2 | 1 | 1 |
|
|
|
|
When I log in as "student"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I press "Attempt quiz now"
|
|
And I click on "True" "radio" in the "First question" "question"
|
|
And I press "Check"
|
|
|
|
Then I should see "First question"
|
|
And I should not see "This question cannot be attempted until the previous question has been completed."
|
|
And I should see "Second question"
|
|
And "Question 1" "link" should exist
|
|
And "Question 2" "link" should exist
|
|
|
|
@javascript
|
|
Scenario: After quiz submitted, all questions show on the review page
|
|
Given the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | truefalse | TF1 | First question |
|
|
| Test questions | truefalse | TF2 | Second question |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber | preferredbehaviour |
|
|
| quiz | Quiz 1 | Quiz 1 description | C1 | quiz1 | immediatefeedback |
|
|
And quiz "Quiz 1" contains the following questions:
|
|
| question | page | requireprevious |
|
|
| TF1 | 1 | 0 |
|
|
| TF2 | 1 | 1 |
|
|
|
|
When I log in as "student"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I press "Attempt quiz now"
|
|
And I press "Finish attempt ..."
|
|
And I press "Submit all and finish"
|
|
And I click on "Submit all and finish" "button" in the "Confirmation" "dialogue"
|
|
|
|
Then the state of "First question" question is shown as "Not answered"
|
|
And the state of "Second question" question is shown as "Not answered"
|
|
|
|
@javascript
|
|
Scenario: A questions cannot be blocked in a deferred feedback quiz (despite what is set in the DB).
|
|
Given the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | truefalse | TF1 | First question |
|
|
| Test questions | truefalse | TF2 | Second question |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber | preferredbehaviour |
|
|
| quiz | Quiz 1 | Quiz 1 description | C1 | quiz1 | deferredfeedback |
|
|
And quiz "Quiz 1" contains the following questions:
|
|
| question | page | requireprevious |
|
|
| TF1 | 1 | 0 |
|
|
| TF2 | 1 | 1 |
|
|
|
|
When I log in as "student"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I press "Attempt quiz now"
|
|
|
|
Then I should see "First question"
|
|
And I should see "Second question"
|
|
And I should not see "This question cannot be attempted until the previous question has been completed."
|
|
|
|
@javascript
|
|
Scenario: Questions cannot be blocked in a shuffled section (despite what is set in the DB).
|
|
Given the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | truefalse | TF1 | First question |
|
|
| Test questions | truefalse | TF2 | Second question |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber | preferredbehaviour | questionsperpage |
|
|
| quiz | Quiz 1 | Quiz 1 description | C1 | quiz1 | immediatefeedback | 2 |
|
|
And quiz "Quiz 1" contains the following questions:
|
|
| question | page | requireprevious |
|
|
| TF1 | 1 | 1 |
|
|
| TF2 | 2 | 1 |
|
|
And quiz "Quiz 1" contains the following sections:
|
|
| heading | firstslot | shuffle |
|
|
| Section 1 | 1 | 1 |
|
|
|
|
When I log in as "student"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I press "Attempt quiz now"
|
|
|
|
Then I should see "First question"
|
|
And I should see "Second question"
|
|
And I should not see "This question cannot be attempted until the previous question has been completed."
|
|
|
|
@javascript
|
|
Scenario: Question dependency cannot apply to the first questions in section when the previous section is shuffled
|
|
Given the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | truefalse | TF1 | First question |
|
|
| Test questions | truefalse | TF2 | Second question |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber | preferredbehaviour | questionsperpage |
|
|
| quiz | Quiz 1 | Quiz 1 description | C1 | quiz1 | immediatefeedback | 2 |
|
|
And quiz "Quiz 1" contains the following questions:
|
|
| question | page | requireprevious |
|
|
| TF1 | 1 | 1 |
|
|
| TF2 | 2 | 1 |
|
|
And quiz "Quiz 1" contains the following sections:
|
|
| heading | firstslot | shuffle |
|
|
| Section 1 | 1 | 1 |
|
|
| Section 2 | 2 | 0 |
|
|
|
|
When I log in as "student"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I press "Attempt quiz now"
|
|
And I press "Next page"
|
|
|
|
Then I should see "Second question"
|
|
And I should not see "This question cannot be attempted until the previous question has been completed."
|
|
|
|
@javascript
|
|
Scenario: A questions cannot be blocked in sequential quiz (despite what is set in the DB).
|
|
Given the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | truefalse | TF1 | First question |
|
|
| Test questions | truefalse | TF2 | Second question |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber | preferredbehaviour | navmethod |
|
|
| quiz | Quiz 1 | Quiz 1 description | C1 | quiz1 | immediatefeedback | sequential |
|
|
And quiz "Quiz 1" contains the following questions:
|
|
| question | page | requireprevious |
|
|
| TF1 | 1 | 1 |
|
|
| TF2 | 1 | 1 |
|
|
|
|
When I log in as "student"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I press "Attempt quiz now"
|
|
|
|
Then I should see "First question"
|
|
And I should see "Second question"
|
|
And I should not see "This question cannot be attempted until the previous question has been completed."
|
|
|
|
@javascript
|
|
Scenario: A questions not blocked if the previous one cannot finish, e.g. essay (despite what is set in the DB).
|
|
Given the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | essay | Story | First question |
|
|
| Test questions | truefalse | TF2 | Second question |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber | preferredbehaviour |
|
|
| quiz | Quiz 1 | Quiz 1 description | C1 | quiz1 | immediatefeedback |
|
|
And quiz "Quiz 1" contains the following questions:
|
|
| question | page | requireprevious |
|
|
| Story | 1 | 0 |
|
|
| TF2 | 1 | 1 |
|
|
|
|
When I log in as "student"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I press "Attempt quiz now"
|
|
|
|
Then I should see "First question"
|
|
And I should see "Second question"
|
|
And I should not see "This question cannot be attempted until the previous question has been completed."
|
|
|
|
@javascript
|
|
Scenario: A questions not blocked if the previous one cannot finish, e.g. description (despite what is set in the DB).
|
|
Given the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | description | Info | Read me |
|
|
| Test questions | truefalse | TF1 | First question |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber | preferredbehaviour |
|
|
| quiz | Quiz 1 | Quiz 1 description | C1 | quiz1 | immediatefeedback |
|
|
And quiz "Quiz 1" contains the following questions:
|
|
| question | page | requireprevious |
|
|
| Info | 1 | 0 |
|
|
| TF1 | 1 | 1 |
|
|
|
|
When I log in as "student"
|
|
And I follow "Course 1"
|
|
And I follow "Quiz 1"
|
|
And I press "Attempt quiz now"
|
|
|
|
Then I should see "Read me"
|
|
And I should see "First question"
|
|
And I should not see "This question cannot be attempted until the previous question has been completed."
|