Merge branch 'MDL-69690-master' of https://github.com/ilyatregubov/moodle

This commit is contained in:
Jun Pataleta 2023-02-02 10:35:02 +08:00
commit 8b88c61b70
4 changed files with 129 additions and 5 deletions

View file

@ -26,6 +26,8 @@ declare(strict_types = 1);
namespace mod_workshop\grades;
use core_grades\component_gradeitems;
use core_grades\local\gradeitem\fieldname_mapping;
use \core_grades\local\gradeitem\itemnumber_mapping;
/**
@ -35,7 +37,7 @@ use \core_grades\local\gradeitem\itemnumber_mapping;
* @copyright Andrew Nicols <andrew@nicols.co.uk>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class gradeitems implements itemnumber_mapping {
class gradeitems implements itemnumber_mapping, fieldname_mapping {
/**
* Return the list of grade item mappings for the workshop.
*
@ -47,4 +49,24 @@ class gradeitems implements itemnumber_mapping {
1 => 'grading',
];
}
/**
* Get the suffixed field name for an activity field mapped from its itemnumber.
*
* For legacy reasons, the first itemnumber has no suffix on field names.
*
* @param string $component The component that the grade item belongs to
* @param int $itemnumber The grade itemnumber
* @param string $fieldname The name of the field to be rewritten
* @return string The translated field name
*/
public static function get_field_name_for_itemnumber(string $component, int $itemnumber, string $fieldname): string {
$itemname = component_gradeitems::get_itemname_from_itemnumber($component, $itemnumber);
if ($itemname) {
return "{$itemname}{$fieldname}";
}
return $fieldname;
}
}

View file

@ -0,0 +1,47 @@
@mod @mod_workshop
Feature: Workshop assessment with grade to pass
In order to use workshop activity
As a teacher
I need to be able to setup workshop with require assessment grade and grade to pass
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| student1 | Sam1 | Student1 | student1@example.com |
| teacher1 | Terry1 | Teacher1 | teacher1@example.com |
And the following "courses" exist:
| fullname | shortname | format | enablecompletion |
| Course1 | c1 | topics | 1 |
And the following "course enrolments" exist:
| user | course | role |
| student1 | c1 | student |
| teacher1 | c1 | editingteacher |
@javascript
Scenario: Setup workshop with assessment grade and pass grade set
And I log in as "teacher1"
And I am on "Course1" course homepage with editing mode on
And I add a "Workshop" to section "0"
And I expand all fieldsets
When I set the following fields to these values:
| Workshop name | Test workshop |
| Completion tracking | Show activity as complete when conditions are met |
| Require grade | Assessment |
| completionpassgrade | 1 |
And I press "Save and display"
And I should see "This activity does not have a valid grade to pass set. It may be set in the Grade section of the activity settings."
And I set the field "Assessment grade to pass" to ""
And I press "Save and display"
And I should see "This activity does not have a valid grade to pass set. It may be set in the Grade section of the activity settings."
And I set the field "Assessment grade to pass" to "81"
And I press "Save and display"
And I should see "The grade to pass can not be greater than the maximum possible grade 20"
And I set the field "Assessment grade to pass" to "hello"
And I press "Save and display"
And I should see "You must enter a number here."
And I set the field "Assessment grade to pass" to "12,34"
And I press "Save and display"
And I should see "You must enter a number here."
And I set the field "Assessment grade to pass" to "10"
And I press "Save and display"
Then I should see "Setup phase" in the "h3#mod_workshop-userplanheading" "css_element"