128 lines
6.3 KiB
Gherkin
128 lines
6.3 KiB
Gherkin
@mod @mod_quiz @core @core_badges @core_completion @javascript
|
|
Feature: Award badges based on activity completion
|
|
In order to ensure a student has learned the material before being marked complete
|
|
As a teacher
|
|
I need to configure an activity to grant a badge only when the student achieves a passing grade upon completion.
|
|
|
|
Background:
|
|
Given the following "users" exist:
|
|
| username | firstname | lastname | email |
|
|
| student1 | Student | 1 | student1@example.com |
|
|
| student2 | Student | 2 | student2@example.com |
|
|
| teacher1 | Teacher | 1 | teacher1@example.com |
|
|
And the following "courses" exist:
|
|
| fullname | shortname | category | enablecompletion |
|
|
| Course 1 | C1 | 0 | 1 |
|
|
And the following "course enrolments" exist:
|
|
| user | course | role |
|
|
| teacher1 | C1 | editingteacher |
|
|
| student1 | C1 | student |
|
|
| student2 | C1 | student |
|
|
And the following "question categories" exist:
|
|
| contextlevel | reference | name |
|
|
| Course | C1 | Test questions |
|
|
And the following "questions" exist:
|
|
| questioncategory | qtype | name | questiontext |
|
|
| Test questions | truefalse | First question | Answer the first question |
|
|
And the following "activities" exist:
|
|
| activity | name | course | idnumber | attempts | gradepass | completion | completionpassgrade | completionusegrade |
|
|
| quiz | Test quiz name 1 | C1 | quiz1 | 2 | 5.00 | 2 | 1 | 1 |
|
|
| quiz | Test quiz name 2 | C1 | quiz2 | 2 | 5.00 | 2 | 0 | 1 |
|
|
And quiz "Test quiz name 1" contains the following questions:
|
|
| question | page |
|
|
| First question | 1 |
|
|
And quiz "Test quiz name 2" contains the following questions:
|
|
| question | page |
|
|
| First question | 1 |
|
|
And the following "core_badges > Badge" exists:
|
|
| name | Course Badge 1 |
|
|
| status | 0 |
|
|
| type | 2 |
|
|
| course | C1 |
|
|
| description | Course badge 1 description |
|
|
| image | badges/tests/behat/badge.png |
|
|
And the following "core_badges > Badge" exists:
|
|
| name | Course Badge 2 |
|
|
| status | 0 |
|
|
| type | 2 |
|
|
| course | C1 |
|
|
| description | Course badge 2 description |
|
|
| image | badges/tests/behat/badge.png |
|
|
And I am on the "Course 1" course page logged in as teacher1
|
|
|
|
Scenario: Student does not earn a badge using activity completion when does not get passing grade
|
|
Given I navigate to "Badges" in current page administration
|
|
And I press "Manage badges"
|
|
And I follow "Course Badge 1"
|
|
And I select "Criteria" from the "jump" singleselect
|
|
And I set the field "type" to "Activity completion"
|
|
And I set the field "Quiz - Test quiz name 1" to "1"
|
|
And I press "Save"
|
|
And I press "Enable access"
|
|
And I press "Continue"
|
|
And I should see "Recipients (0)"
|
|
# Pass grade for student1. Activity is considered complete because student1 got a passing grade.
|
|
And user "student1" has attempted "Test quiz name 1" with responses:
|
|
| slot | response |
|
|
| 1 | True |
|
|
# Fail grade for student2. Activity is considered incomplete because student2 got a failing grade.
|
|
And user "student2" has attempted "Test quiz name 1" with responses:
|
|
| slot | response |
|
|
| 1 | False |
|
|
And I navigate to "Badges > Manage badges" in current page administration
|
|
And I follow "Course Badge 1"
|
|
Then I should see "Recipients (1)"
|
|
And I select "Recipients (1)" from the "jump" singleselect
|
|
And I should see "Student 1"
|
|
And I should not see "Student 2"
|
|
|
|
Scenario: Students with any grades in an activity will receive a badge if the completion condition is set to receive any grade
|
|
Given I navigate to "Badges" in current page administration
|
|
And I press "Manage badges"
|
|
And I follow "Course Badge 2"
|
|
And I select "Criteria" from the "jump" singleselect
|
|
And I set the field "type" to "Activity completion"
|
|
And I set the field "Quiz - Test quiz name 2" to "1"
|
|
And I press "Save"
|
|
And I press "Enable access"
|
|
And I press "Continue"
|
|
# Pass grade for student1.
|
|
And user "student1" has attempted "Test quiz name 2" with responses:
|
|
| slot | response |
|
|
| 1 | True |
|
|
# Fail grade for student2. Activity is considered complete even if student2 got a failing grade.
|
|
And user "student2" has attempted "Test quiz name 2" with responses:
|
|
| slot | response |
|
|
| 1 | False |
|
|
And I navigate to "Badges > Manage badges" in current page administration
|
|
And I follow "Course Badge 2"
|
|
Then I should see "Recipients (2)"
|
|
And I select "Recipients (2)" from the "jump" singleselect
|
|
And I should see "Student 1"
|
|
And I should see "Student 2"
|
|
|
|
Scenario: Previously graded pass/fail students should earn a badge after enabling a badge
|
|
# Pass grade for student1.
|
|
Given user "student1" has attempted "Test quiz name 1" with responses:
|
|
| slot | response |
|
|
| 1 | True |
|
|
# Fail grade for student2.
|
|
And user "student2" has attempted "Test quiz name 1" with responses:
|
|
| slot | response |
|
|
| 1 | False |
|
|
And I navigate to "Badges" in current page administration
|
|
And I press "Manage badges"
|
|
And I follow "Course Badge 1"
|
|
And I select "Criteria" from the "jump" singleselect
|
|
And I set the field "type" to "Activity completion"
|
|
And I set the field "Quiz - Test quiz name 1" to "1"
|
|
And I press "Save"
|
|
# Enable badge access once students have completed the activity.
|
|
When I press "Enable access"
|
|
And I press "Continue"
|
|
# Only student1 should earn the badge because student2 did not pass the quiz.
|
|
Then I should see "Recipients (1)"
|
|
And I select "Recipients (1)" from the "jump" singleselect
|
|
And I should see "Student 1"
|
|
And I should not see "Student 2"
|