You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
450 lines
19 KiB
450 lines
19 KiB
2 years ago
|
@core @core_badges @_file_upload
|
||
|
Feature: Award badges
|
||
|
In order to award badges to users for their achievements
|
||
|
As an admin
|
||
|
I need to add criteria to badges in the system
|
||
|
|
||
|
@javascript
|
||
|
Scenario: Award badge on other badges as criteria
|
||
|
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 | category | groupmode |
|
||
|
| Course 1 | C1 | 0 | 1 |
|
||
|
And the following "course enrolments" exist:
|
||
|
| user | course | role |
|
||
|
| teacher1 | C1 | editingteacher |
|
||
|
| student1 | C1 | student |
|
||
|
And I log in as "teacher1"
|
||
|
And I am on "Course 1" course homepage
|
||
|
# Create course badge 1.
|
||
|
And I navigate to "Badges > Add a new badge" in current page administration
|
||
|
And I follow "Add a new badge"
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Course Badge 1 |
|
||
|
| Description | Course badge 1 description |
|
||
|
| issuername | Tester of course badge |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
And I set the field "type" to "Manual issue by role"
|
||
|
And I expand all fieldsets
|
||
|
# Set to ANY of the roles awards badge.
|
||
|
And I set the field "Teacher" to "1"
|
||
|
And I set the field "Any of the selected roles awards the badge" to "1"
|
||
|
And I press "Save"
|
||
|
And I press "Enable access"
|
||
|
And I press "Continue"
|
||
|
# Badge #2
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I navigate to "Badges > Add a new badge" in current page administration
|
||
|
And I follow "Add a new badge"
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Course Badge 2 |
|
||
|
| Description | Course badge 2 description |
|
||
|
| issuername | Tester of course badge |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
# Set "course badge 1" as criteria
|
||
|
And I set the field "type" to "Awarded badges"
|
||
|
And I set the field "id_badge_badges" to "Course Badge 1"
|
||
|
And I press "Save"
|
||
|
And I press "Enable access"
|
||
|
And I press "Continue"
|
||
|
And I follow "Manage badges"
|
||
|
And I follow "Course Badge 1"
|
||
|
And I follow "Recipients (0)"
|
||
|
And I press "Award badge"
|
||
|
# Award course badge 1 to student 1.
|
||
|
And I set the field "potentialrecipients[]" to "Student 1 (student1@example.com)"
|
||
|
When I press "Award badge"
|
||
|
And I follow "Course Badge 1"
|
||
|
And I follow "Recipients (1)"
|
||
|
Then I should see "Recipients (1)"
|
||
|
And I log out
|
||
|
# Student 1 should have both badges.
|
||
|
And I log in as "student1"
|
||
|
And I follow "Profile" in the user menu
|
||
|
When I click on "Course 1" "link" in the "region-main" "region"
|
||
|
Then I should see "Course Badge 1"
|
||
|
And I should see "Course Badge 2"
|
||
|
# Student 1 should have both badges also in the Badges navigation section.
|
||
|
When I follow "Badges"
|
||
|
Then I should see "Course Badge 1"
|
||
|
And I should see "Course Badge 2"
|
||
|
And I should not see "Manage badges"
|
||
|
And I should not see "Add a new badge"
|
||
|
And I log out
|
||
|
# Teacher 1 should have access to manage/create badges in the Badges navigation section.
|
||
|
When I log in as "teacher1"
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I follow "Badges"
|
||
|
Then I should see "Course Badge 1"
|
||
|
And I should see "Course Badge 2"
|
||
|
And I should see "Manage badges"
|
||
|
And I should see "Add a new badge"
|
||
|
# Teacher 1 should NOT have access to manage/create site badges in the Site badges section.
|
||
|
When I am on homepage
|
||
|
And I press "Customise this page"
|
||
|
# TODO MDL-57120 site "Badges" link not accessible without navigation block.
|
||
|
And I add the "Navigation" block if not present
|
||
|
And I click on "Site pages" "list_item" in the "Navigation" "block"
|
||
|
And I click on "Site badges" "link" in the "Navigation" "block"
|
||
|
Then I should see "There are no badges available."
|
||
|
And I should not see "Manage badges"
|
||
|
And I should not see "Add a new badge"
|
||
|
|
||
|
@javascript
|
||
|
Scenario: Award profile badge
|
||
|
Given I log in as "admin"
|
||
|
And I navigate to "Badges > Add a new badge" in site administration
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Profile Badge |
|
||
|
| Description | Test badge description |
|
||
|
| issuername | Test Badge Site |
|
||
|
| issuercontact | testuser@example.com |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
And I set the field "type" to "Profile completion"
|
||
|
And I expand all fieldsets
|
||
|
And I set the field "First name" to "1"
|
||
|
And I set the field "Email address" to "1"
|
||
|
And I set the field "Phone" to "1"
|
||
|
And I set the field "id_description" to "Criterion description"
|
||
|
When I press "Save"
|
||
|
Then I should see "Profile completion"
|
||
|
And I should see "First name"
|
||
|
And I should see "Email address"
|
||
|
And I should see "Phone"
|
||
|
And I should see "Criterion description"
|
||
|
And I should not see "Criteria for this badge have not been set up yet."
|
||
|
And I press "Enable access"
|
||
|
And I press "Continue"
|
||
|
And I open my profile in edit mode
|
||
|
And I expand all fieldsets
|
||
|
And I set the field "Phone" to "123456789"
|
||
|
And I press "Update profile"
|
||
|
And I follow "Profile" in the user menu
|
||
|
Then I should see "Profile Badge"
|
||
|
And I should not see "There are no badges available."
|
||
|
|
||
|
@javascript
|
||
|
Scenario: Award site badge
|
||
|
Given the following "users" exist:
|
||
|
| username | firstname | lastname | email |
|
||
|
| teacher | teacher | 1 | teacher1@example.com |
|
||
|
| student | student | 1 | student1@example.com |
|
||
|
And I log in as "admin"
|
||
|
And I navigate to "Badges > Add a new badge" in site administration
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Site Badge |
|
||
|
| Description | Site badge description |
|
||
|
| issuername | Tester of site badge |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
And I set the field "type" to "Manual issue by role"
|
||
|
And I set the field "Teacher" to "1"
|
||
|
And I press "Save"
|
||
|
And I press "Enable access"
|
||
|
And I press "Continue"
|
||
|
And I follow "Recipients (0)"
|
||
|
And I press "Award badge"
|
||
|
And I set the field "potentialrecipients[]" to "teacher 1 (teacher1@example.com)"
|
||
|
And I press "Award badge"
|
||
|
And I set the field "potentialrecipients[]" to "student 1 (student1@example.com)"
|
||
|
And I press "Award badge"
|
||
|
When I follow "Site Badge"
|
||
|
Then I should see "Recipients (2)"
|
||
|
And I log out
|
||
|
And I log in as "student"
|
||
|
And I follow "Profile" in the user menu
|
||
|
Then I should see "Site Badge"
|
||
|
|
||
|
@javascript
|
||
|
Scenario: Award course badge
|
||
|
Given the following "users" exist:
|
||
|
| username | firstname | lastname | email |
|
||
|
| teacher1 | Teacher | 1 | teacher1@example.com |
|
||
|
| student1 | Student | 1 | student1@example.com |
|
||
|
| student2 | Student | 2 | student2@example.com |
|
||
|
And the following "courses" exist:
|
||
|
| fullname | shortname | category | groupmode |
|
||
|
| Course 1 | C1 | 0 | 1 |
|
||
|
And the following "course enrolments" exist:
|
||
|
| user | course | role |
|
||
|
| teacher1 | C1 | editingteacher |
|
||
|
| student1 | C1 | student |
|
||
|
| student2 | C1 | student |
|
||
|
And I log in as "teacher1"
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I navigate to "Badges > Add a new badge" in current page administration
|
||
|
And I follow "Add a new badge"
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Course Badge |
|
||
|
| Description | Course badge description |
|
||
|
| issuername | Tester of course badge |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
And I set the field "type" to "Manual issue by role"
|
||
|
And I set the field "Teacher" to "1"
|
||
|
And I press "Save"
|
||
|
And I press "Enable access"
|
||
|
And I press "Continue"
|
||
|
And I follow "Recipients (0)"
|
||
|
And I press "Award badge"
|
||
|
And I set the field "potentialrecipients[]" to "Student 2 (student2@example.com)"
|
||
|
And I press "Award badge"
|
||
|
And I set the field "potentialrecipients[]" to "Student 1 (student1@example.com)"
|
||
|
When I press "Award badge"
|
||
|
And I follow "Course Badge"
|
||
|
Then I should see "Recipients (2)"
|
||
|
And I log out
|
||
|
And I log in as "student1"
|
||
|
And I follow "Profile" in the user menu
|
||
|
And I click on "Course 1" "link" in the "region-main" "region"
|
||
|
And I should see "Course Badge"
|
||
|
|
||
|
@javascript
|
||
|
Scenario: Award badge on activity completion
|
||
|
Given the following "courses" exist:
|
||
|
| fullname | shortname | category |
|
||
|
| Course 1 | C1 | 0 |
|
||
|
And the following "users" exist:
|
||
|
| username | firstname | lastname | email |
|
||
|
| teacher1 | Teacher | Frist | teacher1@example.com |
|
||
|
| student1 | Student | First | student1@example.com |
|
||
|
And the following "course enrolments" exist:
|
||
|
| user | course | role |
|
||
|
| teacher1 | C1 | editingteacher |
|
||
|
| student1 | C1 | student |
|
||
|
And I log in as "teacher1"
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I navigate to "Edit settings" in current page administration
|
||
|
And I set the following fields to these values:
|
||
|
| Enable completion tracking | Yes |
|
||
|
And I press "Save and display"
|
||
|
And I turn editing mode on
|
||
|
And I add a "Assignment" to section "1" and I fill the form with:
|
||
|
| Assignment name | Test assignment name |
|
||
|
| Description | Submit your online text |
|
||
|
| id_completion | 1 |
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I navigate to "Badges > Add a new badge" in current page administration
|
||
|
And I follow "Add a new badge"
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Course Badge |
|
||
|
| Description | Course badge description |
|
||
|
| issuername | Tester of course badge |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
And I set the field "type" to "Activity completion"
|
||
|
And I set the field "Test assignment name" to "1"
|
||
|
And I press "Save"
|
||
|
And I press "Enable access"
|
||
|
When I press "Continue"
|
||
|
And I log out
|
||
|
And I log in as "student1"
|
||
|
And I follow "Profile" in the user menu
|
||
|
And I click on "Course 1" "link" in the "region-main" "region"
|
||
|
Then I should not see "badges"
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I click on "Not completed: Test assignment name" "icon"
|
||
|
And I follow "Profile" in the user menu
|
||
|
And I click on "Course 1" "link" in the "region-main" "region"
|
||
|
Then I should see "Course Badge"
|
||
|
|
||
|
@javascript
|
||
|
Scenario: Award badge on course completion
|
||
|
Given the following "courses" exist:
|
||
|
| fullname | shortname | category |
|
||
|
| Course 1 | C1 | 0 |
|
||
|
And the following "users" exist:
|
||
|
| username | firstname | lastname | email |
|
||
|
| teacher1 | Teacher | Frist | teacher1@example.com |
|
||
|
| student1 | Student | First | student1@example.com |
|
||
|
And the following "course enrolments" exist:
|
||
|
| user | course | role |
|
||
|
| teacher1 | C1 | editingteacher |
|
||
|
| student1 | C1 | student |
|
||
|
And I log in as "teacher1"
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I navigate to "Edit settings" in current page administration
|
||
|
And I set the following fields to these values:
|
||
|
| Enable completion tracking | Yes |
|
||
|
And I press "Save and display"
|
||
|
And I turn editing mode on
|
||
|
And I add a "Assignment" to section "1" and I fill the form with:
|
||
|
| Assignment name | Test assignment name |
|
||
|
| Description | Submit your online text |
|
||
|
| assignsubmission_onlinetext_enabled | 1 |
|
||
|
| id_completion | 1 |
|
||
|
And I navigate to "Course completion" in current page administration
|
||
|
And I set the field "id_overall_aggregation" to "2"
|
||
|
And I click on "Condition: Activity completion" "link"
|
||
|
And I set the field "Assignment - Test assignment name" to "1"
|
||
|
And I press "Save changes"
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I navigate to "Badges > Add a new badge" in current page administration
|
||
|
And I follow "Add a new badge"
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Course Badge |
|
||
|
| Description | Course badge description |
|
||
|
| issuername | Tester of course badge |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
And I set the field "type" to "Course completion"
|
||
|
And I set the field with xpath ".//*[contains(., 'Minimum grade required')]/ancestor::*[contains(concat(' ', @class, ' '), ' fitem ')]//input[1]" to "0"
|
||
|
And I press "Save"
|
||
|
And I press "Enable access"
|
||
|
When I press "Continue"
|
||
|
And I log out
|
||
|
And I log in as "student1"
|
||
|
And I follow "Profile" in the user menu
|
||
|
And I click on "Course 1" "link" in the "region-main" "region"
|
||
|
Then I should not see "badges"
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I click on "Not completed: Test assignment name" "icon"
|
||
|
And I log out
|
||
|
# Completion cron won't mark the whole course completed unless the
|
||
|
# individual criteria was marked completed more than a second ago. So
|
||
|
# run it twice, first to mark the criteria and second for the course.
|
||
|
And I run the scheduled task "core\task\completion_regular_task"
|
||
|
And I wait "1" seconds
|
||
|
And I run the scheduled task "core\task\completion_regular_task"
|
||
|
# The student should now see their badge.
|
||
|
And I log in as "student1"
|
||
|
And I follow "Profile" in the user menu
|
||
|
Then I should see "Course Badge"
|
||
|
|
||
|
@javascript
|
||
|
Scenario: All of the selected roles can award badges
|
||
|
Given the following "users" exist:
|
||
|
| username | firstname | lastname | email |
|
||
|
| teacher1 | Teacher | 1 | teacher1@example.com |
|
||
|
| student1 | Student | 1 | student1@example.com |
|
||
|
| student2 | Student | 2 | student2@example.com |
|
||
|
And the following "courses" exist:
|
||
|
| fullname | shortname | category | groupmode |
|
||
|
| Course 1 | C1 | 0 | 1 |
|
||
|
And the following "course enrolments" exist:
|
||
|
| user | course | role |
|
||
|
| teacher1 | C1 | editingteacher |
|
||
|
| student1 | C1 | student |
|
||
|
| student2 | C1 | student |
|
||
|
And I log in as "teacher1"
|
||
|
And I am on "Course 1" course homepage
|
||
|
# Create course badge 1.
|
||
|
And I navigate to "Badges > Add a new badge" in current page administration
|
||
|
And I follow "Add a new badge"
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Course Badge 1 |
|
||
|
| Description | Course badge description |
|
||
|
| issuername | Tester of course badge |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
And I set the field "type" to "Manual issue by role"
|
||
|
And I expand all fieldsets
|
||
|
# Set to ANY of the roles awards badge.
|
||
|
And I set the field "Teacher" to "1"
|
||
|
And I set the field "Any of the selected roles awards the badge" to "1"
|
||
|
And I press "Save"
|
||
|
And I press "Enable access"
|
||
|
And I press "Continue"
|
||
|
And I follow "Recipients (0)"
|
||
|
And I press "Award badge"
|
||
|
# Award course badge 1 to student 1.
|
||
|
And I set the field "potentialrecipients[]" to "Student 1 (student1@example.com)"
|
||
|
When I press "Award badge"
|
||
|
And I follow "Course Badge 1"
|
||
|
And I follow "Recipients (1)"
|
||
|
Then I should see "Recipients (1)"
|
||
|
# Add course badge 2.
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I navigate to "Badges > Add a new badge" in current page administration
|
||
|
And I follow "Add a new badge"
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Course Badge 2 |
|
||
|
| Description | Course badge description |
|
||
|
| issuername | Tester of course badge |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
And I set the field "type" to "Manual issue by role"
|
||
|
And I expand all fieldsets
|
||
|
# Set to ALL of the selected roles award badge.
|
||
|
And I set the field "Teacher" to "1"
|
||
|
And I set the field "All of the selected roles award the badge" to "1"
|
||
|
And I press "Save"
|
||
|
And I press "Enable access"
|
||
|
And I press "Continue"
|
||
|
And I follow "Recipients (0)"
|
||
|
And I press "Award badge"
|
||
|
# Award course badge 2 to student 2.
|
||
|
And I set the field "potentialrecipients[]" to "Student 2 (student2@example.com)"
|
||
|
When I press "Award badge"
|
||
|
And I follow "Course Badge 2"
|
||
|
And I follow "Recipients (1)"
|
||
|
Then I should see "Recipients (1)"
|
||
|
And I log out
|
||
|
And I trigger cron
|
||
|
# Student 1 should have just course badge 1.
|
||
|
And I log in as "student1"
|
||
|
And I follow "Profile" in the user menu
|
||
|
When I click on "Course 1" "link" in the "region-main" "region"
|
||
|
Then I should see "Course Badge 1"
|
||
|
And I should not see "Course Badge 2"
|
||
|
And I log out
|
||
|
# Student 2 should have just course badge 2.
|
||
|
And I log in as "student2"
|
||
|
And I follow "Profile" in the user menu
|
||
|
When I click on "Course 1" "link" in the "region-main" "region"
|
||
|
Then I should see "Course Badge 2"
|
||
|
Then I should not see "Course Badge 1"
|
||
|
|
||
|
@javascript
|
||
|
Scenario: Revoke badge
|
||
|
Given the following "users" exist:
|
||
|
| username | firstname | lastname | email |
|
||
|
| teacher1 | Teacher | 1 | teacher1@example.com |
|
||
|
| student1 | Student | 1 | student1@example.com |
|
||
|
| student2 | Student | 2 | student2@example.com |
|
||
|
And the following "courses" exist:
|
||
|
| fullname | shortname | category | groupmode |
|
||
|
| Course 1 | C1 | 0 | 1 |
|
||
|
And the following "course enrolments" exist:
|
||
|
| user | course | role |
|
||
|
| teacher1 | C1 | editingteacher |
|
||
|
| student1 | C1 | student |
|
||
|
| student2 | C1 | student |
|
||
|
And I log in as "teacher1"
|
||
|
And I am on "Course 1" course homepage
|
||
|
And I navigate to "Badges > Add a new badge" in current page administration
|
||
|
And I follow "Add a new badge"
|
||
|
And I set the following fields to these values:
|
||
|
| Name | Course Badge |
|
||
|
| Description | Course badge description |
|
||
|
| issuername | Tester of course badge |
|
||
|
And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
|
||
|
And I press "Create badge"
|
||
|
And I set the field "type" to "Manual issue by role"
|
||
|
And I set the field "Teacher" to "1"
|
||
|
And I press "Save"
|
||
|
And I press "Enable access"
|
||
|
And I press "Continue"
|
||
|
And I follow "Recipients (0)"
|
||
|
And I press "Award badge"
|
||
|
And I set the field "potentialrecipients[]" to "Student 2 (student2@example.com)"
|
||
|
And I press "Award badge"
|
||
|
And I set the field "potentialrecipients[]" to "Student 1 (student1@example.com)"
|
||
|
When I press "Award badge"
|
||
|
And I follow "Course Badge"
|
||
|
Then I should see "Recipients (2)"
|
||
|
And I follow "Recipients (2)"
|
||
|
And I press "Award badge"
|
||
|
And I set the field "existingrecipients[]" to "Student 2 (student2@example.com)"
|
||
|
And I press "Revoke badge"
|
||
|
And I set the field "existingrecipients[]" to "Student 1 (student1@example.com)"
|
||
|
When I press "Revoke badge"
|
||
|
And I follow "Course Badge"
|
||
|
Then I should see "Recipients (0)"
|