Skip to content

Commit

Permalink
Merge branch 'MDL-76010_400' of https://github.com/stronk7/moodle int…
Browse files Browse the repository at this point in the history
…o MOODLE_400_STABLE
  • Loading branch information
sarjona committed Oct 19, 2022
2 parents eb4b144 + 0bf0f82 commit f00b1a8
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 21 deletions.
29 changes: 10 additions & 19 deletions mod/h5pactivity/tests/behat/grading_attempts.feature
Expand Up @@ -26,27 +26,18 @@ Feature: Change grading options in an H5P activity
| name | Awesome H5P package |
| intro | Description |
| packagefilepath | h5p/tests/fixtures/multiple-choice-2-6.h5p |
And I am on the "Awesome H5P package" "h5pactivity activity" page logged in as student1
And I switch to "h5p-player" class iframe
And I switch to "h5p-iframe" class iframe
And I click on "Wrong one" "text" in the ".h5p-question-content" "css_element"
And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
And I click on "Retry" "button" in the ".h5p-question-buttons" "css_element"
And I click on "Correct one" "text" in the ".h5p-question-content" "css_element"
And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
And I switch to the main frame
# H5P does not allow to Retry if the user checks the correct answer, we need to refresh the page.
And I reload the page
And I switch to "h5p-player" class iframe
And I switch to "h5p-iframe" class iframe
And I click on "Wrong one" "text" in the ".h5p-question-content" "css_element"
And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
And I switch to the main frame
And I log out
And the following "mod_h5pactivity > attempts" exist:
| user | h5pactivity | attempt | interactiontype | rawscore | maxscore | duration | completion | success |
| student1 | Awesome H5P package | 1 | choice | 0 | 1 | 4 | 1 | 0 |
| student1 | Awesome H5P package | 2 | choice | 1 | 1 | 4 | 1 | 1 |
| student1 | Awesome H5P package | 3 | choice | 0 | 1 | 4 | 1 | 0 |

@javascript
Scenario: Default grading is max attempt grade
Given I am on the "Course 1" course page logged in as teacher1
Given I am on the "Awesome H5P package" "h5pactivity activity editing" page logged in as teacher1
And I expand all fieldsets
And the field "Grading method" matches value "Highest grade"
And I click on "Save and return to course" "button"
When I navigate to "View > User report" in the course gradebook
And I set the field "Select all or one user" to "Student 1"
Then the following should exist in the "user-grade" table:
Expand All @@ -66,7 +57,7 @@ Feature: Change grading options in an H5P activity
| Awesome H5P package | 0.00 | 0.00 % |

@javascript
Scenario: Change setting to first attempt
Scenario: Change setting to last attempt
Given I am on the "Awesome H5P package" "h5pactivity activity editing" page logged in as teacher1
When I set the following fields to these values:
| Grading method | Last attempt |
Expand Down
47 changes: 45 additions & 2 deletions mod/h5pactivity/tests/behat/sending_attempt.feature
Expand Up @@ -2,7 +2,7 @@
Feature: Do a H5P attempt
In order to let students do a H5P attempt
As a teacher
I need to list students attempts on the log report
I need to list students attempts on various reports

Background:
Given the following "users" exist:
Expand All @@ -26,14 +26,15 @@ Feature: Do a H5P attempt
| name | Awesome H5P package |
| intro | Description |
| packagefilepath | h5p/tests/fixtures/multiple-choice-2-6.h5p |
| grademethod | 2 |

Scenario: View an H5P as a teacher
When I am on the "Awesome H5P package" "h5pactivity activity" page logged in as teacher1
And I wait until the page is ready
Then I should see "This content is displayed in preview mode"

@javascript
Scenario: To an attempts and check on course log report
Scenario: Do an attempt and check on course log report
When I am on the "Awesome H5P package" "h5pactivity activity" page logged in as student1
And I wait until the page is ready
And I should not see "This content is displayed in preview mode"
Expand All @@ -48,3 +49,45 @@ Feature: Do a H5P attempt
And I follow "Student 1"
Then I follow "Today's logs"
And I should see "xAPI statement received"

@javascript
Scenario: Do various attempts and check them with the attempts and user grades reports
Given I am on the "Awesome H5P package" "h5pactivity activity" page logged in as student1
And I wait until the page is ready
And I should not see "This content is displayed in preview mode"
And I switch to "h5p-player" class iframe
And I switch to "h5p-iframe" class iframe
And I click on "Wrong one" "text" in the ".h5p-question-content" "css_element"
And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
And I click on "Retry" "button" in the ".h5p-question-buttons" "css_element"
# We need to wait 1 second here because, in very quick environments, the 2nd
# attempts happen too close to the 1st one and it's not sent properly. See MDL-76010.
And I wait "1" seconds
And I click on "Correct one" "text" in the ".h5p-question-content" "css_element"
And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
# H5P does not allow to Retry if the user checks the correct answer, we need to refresh the page.
And I switch to the main frame
And I reload the page
And I switch to "h5p-player" class iframe
And I switch to "h5p-iframe" class iframe
# Because of the steps above, the 2nd and 3rd attempts are enough "separated" and we don't
# need to add any wait here.
And I click on "Wrong one" "text" in the ".h5p-question-content" "css_element"
And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
And I click on "Retry" "button" in the ".h5p-question-buttons" "css_element"
# Again, the wait between 3rd and 4th attempt, to separate them a little bit.
And I wait "1" seconds
And I click on "Correct one" "text" in the ".h5p-question-content" "css_element"
And I click on "Check" "button" in the ".h5p-question-buttons" "css_element"
And I switch to the main frame
When I navigate to "Attempts report" in current page administration
And "1" row "Score" column of "table" table should contain "0"
And "2" row "Score" column of "table" table should contain "1"
And "3" row "Score" column of "table" table should contain "0"
And "4" row "Score" column of "table" table should contain "1"
And I am on the "Course 1" course page logged in as teacher1
And I navigate to "View > User report" in the course gradebook
And I set the field "Select all or one user" to "Student 1"
Then the following should exist in the "user-grade" table:
| Grade item | Grade | Percentage |
| Awesome H5P package | 50.00 | 50.00 % |
7 changes: 7 additions & 0 deletions mod/h5pactivity/tests/generator/lib.php
Expand Up @@ -192,6 +192,7 @@ public function create_content($instance, $record = []) {
* @param array $data the attempts data array
*/
public function create_attempt(array $data): void {
global $DB;

if (!isset($data['h5pactivityid'])) {
throw new coding_exception('Must specify h5pactivityid when creating a H5P attempt.');
Expand Down Expand Up @@ -219,6 +220,12 @@ public function create_attempt(array $data): void {
}

$this->insert_statement($data, $this->$method($data));

// If the activity has tracking enabled, try to recalculate grades.
$activity = $DB->get_record('h5pactivity', ['id' => $data['h5pactivityid']]);
if ($activity->enabletracking) {
h5pactivity_update_grades($activity, $data['userid']);
}
}

/**
Expand Down

0 comments on commit f00b1a8

Please sign in to comment.