Merge branch 'MDL-68902-master' of git://github.com/ferranrecio/moodle
authorSara Arjona <sara@moodle.com>
Wed, 10 Jun 2020 15:57:40 +0000 (17:57 +0200)
committerSara Arjona <sara@moodle.com>
Wed, 10 Jun 2020 15:57:40 +0000 (17:57 +0200)
h5p/tests/fixtures/basic_essay.h5p [new file with mode: 0644]
mod/h5pactivity/classes/output/result.php
mod/h5pactivity/classes/output/result/fillin.php
mod/h5pactivity/classes/output/result/longfillin.php
mod/h5pactivity/templates/local/result/header.mustache
mod/h5pactivity/tests/behat/result_fillin.feature [new file with mode: 0644]
mod/h5pactivity/tests/behat/result_longfillin.feature [new file with mode: 0644]

diff --git a/h5p/tests/fixtures/basic_essay.h5p b/h5p/tests/fixtures/basic_essay.h5p
new file mode 100644 (file)
index 0000000..315ab7c
Binary files /dev/null and b/h5p/tests/fixtures/basic_essay.h5p differ
index fc8b53a..acb8339 100644 (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,
index 0439845..35d33bb 100644 (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.
      *
index 7297132..af1f8ad 100644 (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;
     }
 }
diff --git a/mod/h5pactivity/tests/behat/result_fillin.feature b/mod/h5pactivity/tests/behat/result_fillin.feature
new file mode 100644 (file)
index 0000000..24c3e6f
--- /dev/null
@@ -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>"
diff --git a/mod/h5pactivity/tests/behat/result_longfillin.feature b/mod/h5pactivity/tests/behat/result_longfillin.feature
new file mode 100644 (file)
index 0000000..405d570
--- /dev/null
@@ -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>"