MDL-68902 mod_h5pactivity: fix result report output

This commit is contained in:
Ferran Recio 2020-06-09 13:21:50 +02:00
parent 4b6e92b8e9
commit 56d9b5f8d5
6 changed files with 109 additions and 16 deletions

View File

@ -150,7 +150,7 @@ class result implements renderable, templatable {
'subcontent' => $result->subcontent,
'timecreated' => $result->timecreated,
'interactiontype' => $result->interactiontype,
'description' => format_string($result->description),
'description' => strip_tags($result->description),
'rawscore' => $result->rawscore,
'maxscore' => $result->maxscore,
'duration' => $result->duration,

View File

@ -38,19 +38,6 @@ use stdClass;
*/
class fillin extends result {
/**
* Export this data so it can be used as the context for a mustache template.
*
* @param renderer_base $output
* @return stdClass
*/
public function export_for_template(renderer_base $output): stdClass {
$data = parent::export_for_template($output);
$data->content = $this->result->description;
$data->description = get_string('result_fill-in', 'mod_h5pactivity');
return $data;
}
/**
* Return the options data structure.
*

View File

@ -46,8 +46,13 @@ class longfillin extends result {
*/
public function export_for_template(renderer_base $output): stdClass {
$data = parent::export_for_template($output);
$data->content = reset($this->response);
$userresponse = reset($this->response);
$data->content = format_text($userresponse, FORMAT_PLAIN);
$data->track = true;
// Long fill-in is used for Essay type exercices. H5P adds
// extra characters to the description in all fill-in interactions
// but in the essay questions is unnecesary.
$data->description = preg_replace('/__________$/', '', $data->description);
return $data;
}
}

View File

@ -40,5 +40,5 @@
}}
<h3 class="w-100">
{{description}}
{{{description}}}
</h3>

View File

@ -0,0 +1,55 @@
@mod @mod_h5pactivity @core_h5p @_file_upload @_switch_iframe @javascript
Feature: View fill the blanks attempt report
In order to let users to review a fill the blanks attempt
As a user
I need to view fill in interactions in the report
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| student1 | Student | 1 | student1@example.com |
And the following "courses" exist:
| fullname | shortname | category |
| Course 1 | C1 | 0 |
And the following "course enrolments" exist:
| user | course | role |
| student1 | C1 | student |
And I log in as "admin"
# No HTML should appear even with formatstringstriptags disabled.
And I set the following administration settings values:
| formatstringstriptags | 0 |
And I am on "Course 1" course homepage with editing mode on
And I add a "H5P" to section "1"
And I set the following fields to these values:
| Name | Awesome H5P package |
| Description | Description |
| Grading method | Average grade |
And I upload "h5p/tests/fixtures/filltheblanks.h5p" file to "Package file" filemanager
And I click on "Save and display" "button"
And I log out
Scenario: View attempt in a fill the blanks content
# Do an attempt.
Given I log in as "student1"
And I am on "Course 1" course homepage
And I follow "Awesome H5P package"
And I switch to "h5p-player" class iframe
And I switch to "h5p-iframe" class iframe
And I set the field with xpath "//input[contains(@aria-label,\"Blank input 1 of 4\")]" to "Brigadoon"
And I set the field with xpath "//input[contains(@aria-label,\"Blank input 2 of 4\")]" to "Emerald city"
And I set the field with xpath "//input[contains(@aria-label,\"Blank input 3 of 4\")]" to "Narnia"
And I set the field with xpath "//input[contains(@aria-label,\"Blank input 4 of 4\")]" to "Canberra"
And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
And I switch to the main frame
And I reload the page
# Check attempt.
When I follow "View my attempts"
And I follow "View report"
Then I should see "Of which countries are Berlin, Washington, Beijing, Canberra and Brasilia the capitals?"
And I should see "brigadoon" in the "brasilia" "table_row"
And "Your answer is incorrect" "icon" should exist in the "brasilia" "table_row"
And I should see "emerald city" in the "washington" "table_row"
And I should see "narnia" in the "berlin" "table_row"
And "Your answer is incorrect" "icon" should exist in the "berlin" "table_row"
And "Your answer is correct" "icon" should exist in the "canberra" "table_row"
And I should not see "<p>"

View File

@ -0,0 +1,46 @@
@mod @mod_h5pactivity @core_h5p @_file_upload @_switch_iframe @javascript
Feature: View essay attempt report
In order to let users to review an essay attempt
As a user
I need to view long fill in interactions in the report
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| student1 | Student | 1 | student1@example.com |
And the following "courses" exist:
| fullname | shortname | category |
| Course 1 | C1 | 0 |
And the following "course enrolments" exist:
| user | course | role |
| student1 | C1 | student |
And I log in as "admin"
# No HTML should appear even with formatstringstriptags disabled.
And I set the following administration settings values:
| formatstringstriptags | 0 |
And I am on "Course 1" course homepage with editing mode on
And I add a "H5P" to section "1"
And I set the following fields to these values:
| Name | Awesome H5P package |
| Description | Description |
| Grading method | Average grade |
And I upload "h5p/tests/fixtures/basic_essay.h5p" file to "Package file" filemanager
And I click on "Save and display" "button"
And I log out
Scenario: View attempt essay content
# Do an attempt.
Given I log in as "student1"
And I am on "Course 1" course homepage
And I follow "Awesome H5P package"
And I switch to "h5p-player" class iframe
And I switch to "h5p-iframe" class iframe
And I set the field with xpath "//textarea" to "This is a smurfing smurf"
And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
And I switch to the main frame
And I reload the page
# Check attempt.
When I follow "View my attempts"
And I follow "View report"
Then I should see "This is a smurfing smurf"
And I should not see "<strong>smurf</strong>"