| Línea 35... |
Línea 35... |
| 35 |
*
|
35 |
*
|
| 36 |
* @package mod_scorm
|
36 |
* @package mod_scorm
|
| 37 |
* @copyright 2021 Michael Hawkins <michaelh@moodle.com>
|
37 |
* @copyright 2021 Michael Hawkins <michaelh@moodle.com>
|
| 38 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
38 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
| 39 |
*/
|
39 |
*/
|
| 40 |
class custom_completion_test extends advanced_testcase {
|
40 |
final class custom_completion_test extends advanced_testcase {
|
| Línea 41... |
Línea 41... |
| 41 |
|
41 |
|
| 42 |
/**
|
42 |
/**
|
| 43 |
* Data provider for get_state().
|
43 |
* Data provider for get_state().
|
| 44 |
*
|
44 |
*
|
| 45 |
* @return array[]
|
45 |
* @return array[]
|
| 46 |
*/
|
46 |
*/
|
| Línea 47... |
Línea 47... |
| 47 |
public function get_state_provider(): array {
|
47 |
public static function get_state_provider(): array {
|
| 48 |
|
48 |
|
| 49 |
// Prepare various reusable user scorm track data used to mock various completion states/requirements.
|
49 |
// Prepare various reusable user scorm track data used to mock various completion states/requirements.
|
| 50 |
$completionincomplete = (object) [
|
50 |
$completionincomplete = (object) [
|
| Línea 82... |
Línea 82... |
| 82 |
'value' => '100',
|
82 |
'value' => '100',
|
| 83 |
];
|
83 |
];
|
| Línea 84... |
Línea 84... |
| 84 |
|
84 |
|
| 85 |
return [
|
85 |
return [
|
| 86 |
'Undefined completion requirement' => [
|
86 |
'Undefined completion requirement' => [
|
| 87 |
'somenonexistentrule', COMPLETION_ENABLED, [$completionincomplete], 0, null, coding_exception::class
|
87 |
'somenonexistentrule', COMPLETION_ENABLED, [$completionincomplete], 0, null, coding_exception::class,
|
| 88 |
],
|
88 |
],
|
| 89 |
'Completion status requirement not available' => [
|
89 |
'Completion status requirement not available' => [
|
| 90 |
'completionstatusrequired', COMPLETION_DISABLED, [$completionincomplete], 0, null, moodle_exception::class
|
90 |
'completionstatusrequired', COMPLETION_DISABLED, [$completionincomplete], 0, null, moodle_exception::class,
|
| 91 |
],
|
91 |
],
|
| 92 |
'Completion status Passed required, user has no completion status recorded' => [
|
92 |
'Completion status Passed required, user has no completion status recorded' => [
|
| 93 |
'completionstatusrequired', 2, [], 0, COMPLETION_INCOMPLETE, null
|
93 |
'completionstatusrequired', 2, [], 0, COMPLETION_INCOMPLETE, null,
|
| 94 |
],
|
94 |
],
|
| 95 |
'Completion status Passed required, user has not passed, can make another attempt' => [
|
95 |
'Completion status Passed required, user has not passed, can make another attempt' => [
|
| 96 |
'completionstatusrequired', 2, [$completionincomplete], 0, COMPLETION_INCOMPLETE, null
|
96 |
'completionstatusrequired', 2, [$completionincomplete], 0, COMPLETION_INCOMPLETE, null,
|
| 97 |
],
|
97 |
],
|
| 98 |
'Completion status Passed required, user has passed' => [
|
98 |
'Completion status Passed required, user has passed' => [
|
| 99 |
'completionstatusrequired', 2, [$completionpassed], 0, COMPLETION_COMPLETE, null
|
99 |
'completionstatusrequired', 2, [$completionpassed], 0, COMPLETION_COMPLETE, null,
|
| 100 |
],
|
100 |
],
|
| 101 |
'Completion status Completed required, user has not completed, can make another attempt' => [
|
101 |
'Completion status Completed required, user has not completed, can make another attempt' => [
|
| 102 |
'completionstatusrequired', 4, [$completionincomplete], 2, COMPLETION_INCOMPLETE, null
|
102 |
'completionstatusrequired', 4, [$completionincomplete], 2, COMPLETION_INCOMPLETE, null,
|
| 103 |
],
|
103 |
],
|
| 104 |
'Completion status Completed required, user has completed' => [
|
104 |
'Completion status Completed required, user has completed' => [
|
| 105 |
'completionstatusrequired', 4, [$completioncompleted], 1, COMPLETION_COMPLETE, null
|
105 |
'completionstatusrequired', 4, [$completioncompleted], 1, COMPLETION_COMPLETE, null,
|
| 106 |
],
|
106 |
],
|
| 107 |
'Completion status Passed or Completed required, user has only completed, can make another attempt' => [
|
107 |
'Completion status Passed or Completed required, user has only completed, can make another attempt' => [
|
| 108 |
'completionstatusrequired', 6, [$completioncompleted], 0, COMPLETION_COMPLETE, null
|
108 |
'completionstatusrequired', 6, [$completioncompleted], 0, COMPLETION_COMPLETE, null,
|
| 109 |
],
|
109 |
],
|
| 110 |
'Completion status Passed or Completed required, user has completed and passed' => [
|
110 |
'Completion status Passed or Completed required, user has completed and passed' => [
|
| 111 |
'completionstatusrequired', 6, [$completionpassed, $completioncompleted], 0, COMPLETION_COMPLETE, null
|
111 |
'completionstatusrequired', 6, [$completionpassed, $completioncompleted], 0, COMPLETION_COMPLETE, null,
|
| 112 |
],
|
112 |
],
|
| 113 |
'Completion status Passed or Completed required, user has not passed or completed, but has another attempt' => [
|
113 |
'Completion status Passed or Completed required, user has not passed or completed, but has another attempt' => [
|
| 114 |
'completionstatusrequired', 6, [$completionincomplete], 2, COMPLETION_INCOMPLETE, null
|
114 |
'completionstatusrequired', 6, [$completionincomplete], 2, COMPLETION_INCOMPLETE, null,
|
| 115 |
],
|
115 |
],
|
| 116 |
'Completion status Passed or Completed required, user has used all attempts, but not passed or completed' => [
|
116 |
'Completion status Passed or Completed required, user has used all attempts, but not passed or completed' => [
|
| 117 |
'completionstatusrequired', 6, [$completionincomplete], 1, COMPLETION_COMPLETE_FAIL, null
|
117 |
'completionstatusrequired', 6, [$completionincomplete], 1, COMPLETION_INCOMPLETE, null,
|
| 118 |
],
|
118 |
],
|
| 119 |
'Completion status Passed required, user has used all attempts and completed, but not passed' => [
|
119 |
'Completion status Passed required, user has used all attempts and completed, but not passed' => [
|
| 120 |
'completionstatusrequired', 2, [$completioncompleted], 1, COMPLETION_COMPLETE_FAIL, null
|
120 |
'completionstatusrequired', 2, [$completioncompleted], 1, COMPLETION_INCOMPLETE, null,
|
| 121 |
],
|
121 |
],
|
| 122 |
'Completion status Completed required, user has used all attempts, but not completed' => [
|
122 |
'Completion status Completed required, user has used all attempts, but not completed' => [
|
| 123 |
'completionstatusrequired', 4, [$completionincomplete], 1, COMPLETION_COMPLETE_FAIL, null
|
123 |
'completionstatusrequired', 4, [$completionincomplete], 1, COMPLETION_INCOMPLETE, null,
|
| 124 |
],
|
124 |
],
|
| 125 |
'Completion status Passed or Completed required, user has used all attempts, but not passed' => [
|
125 |
'Completion status Passed or Completed required, user has used all attempts, but not passed' => [
|
| 126 |
'completionstatusrequired', 6, [$completionincomplete, $completioncompleted], 2, COMPLETION_COMPLETE, null
|
126 |
'completionstatusrequired', 6, [$completionincomplete, $completioncompleted], 2, COMPLETION_COMPLETE, null,
|
| 127 |
],
|
127 |
],
|
| 128 |
'Completion score required, user has no score' => [
|
128 |
'Completion score required, user has no score' => [
|
| 129 |
'completionscorerequired', 80, [], 0, COMPLETION_INCOMPLETE, null
|
129 |
'completionscorerequired', 80, [], 0, COMPLETION_INCOMPLETE, null,
|
| 130 |
],
|
130 |
],
|
| 131 |
'Completion score required, user score does not meet requirement, can make another attempt' => [
|
131 |
'Completion score required, user score does not meet requirement, can make another attempt' => [
|
| 132 |
'completionscorerequired', 80, [$completionscorefail], 0, COMPLETION_INCOMPLETE, null
|
132 |
'completionscorerequired', 80, [$completionscorefail], 0, COMPLETION_INCOMPLETE, null,
|
| 133 |
],
|
133 |
],
|
| 134 |
'Completion score required, user has used all attempts, but not reached the score' => [
|
134 |
'Completion score required, user has used all attempts, but not reached the score' => [
|
| 135 |
'completionscorerequired', 80, [$completionscorefail], 1, COMPLETION_COMPLETE_FAIL, null
|
135 |
'completionscorerequired', 80, [$completionscorefail], 1, COMPLETION_INCOMPLETE, null,
|
| 136 |
],
|
136 |
],
|
| 137 |
'Completion score required, user score meets requirement' => [
|
137 |
'Completion score required, user score meets requirement' => [
|
| 138 |
'completionscorerequired', 80, [$completionscorepass], 0, COMPLETION_COMPLETE, null
|
138 |
'completionscorerequired', 80, [$completionscorepass], 0, COMPLETION_COMPLETE, null,
|
| 139 |
],
|
139 |
],
|
| 140 |
'Completion of all scos required, user has not completed, can make another attempt' => [
|
140 |
'Completion of all scos required, user has not completed, can make another attempt' => [
|
| 141 |
'completionstatusallscos', 1, [$completionincomplete, $completioncompleted], 3, COMPLETION_INCOMPLETE, null
|
141 |
'completionstatusallscos', 1, [$completionincomplete, $completioncompleted], 3, COMPLETION_INCOMPLETE, null,
|
| 142 |
],
|
142 |
],
|
| 143 |
'Completion of all scos required, user has completed' => [
|
143 |
'Completion of all scos required, user has completed' => [
|
| 144 |
'completionstatusallscos', 1, [$completionpassed, $completioncompleted], 2, COMPLETION_COMPLETE, null
|
144 |
'completionstatusallscos', 1, [$completionpassed, $completioncompleted], 2, COMPLETION_COMPLETE, null,
|
| 145 |
],
|
145 |
],
|
| 146 |
'Completion of all scos required, user has used all attempts, but not completed all scos' => [
|
146 |
'Completion of all scos required, user has used all attempts, but not completed all scos' => [
|
| 147 |
'completionstatusallscos', 1, [$completionincomplete, $completioncompleted], 2, COMPLETION_COMPLETE_FAIL, null
|
147 |
'completionstatusallscos', 1, [$completionincomplete, $completioncompleted], 2, COMPLETION_INCOMPLETE, null,
|
| 148 |
],
|
148 |
],
|
| 149 |
];
|
149 |
];
|
| Línea 150... |
Línea 150... |
| 150 |
}
|
150 |
}
|
| Línea 299... |
Línea 299... |
| 299 |
/**
|
299 |
/**
|
| 300 |
* Data provider for test_get_available_custom_rules().
|
300 |
* Data provider for test_get_available_custom_rules().
|
| 301 |
*
|
301 |
*
|
| 302 |
* @return array[]
|
302 |
* @return array[]
|
| 303 |
*/
|
303 |
*/
|
| 304 |
public function get_available_custom_rules_provider(): array {
|
304 |
public static function get_available_custom_rules_provider(): array {
|
| 305 |
return [
|
305 |
return [
|
| 306 |
'Completion status enabled only' => [
|
306 |
'Completion status enabled only' => [
|
| 307 |
[
|
307 |
[
|
| 308 |
'completionstatusrequired' => 4,
|
308 |
'completionstatusrequired' => 4,
|
| 309 |
'completionscorerequired' => COMPLETION_DISABLED,
|
309 |
'completionscorerequired' => COMPLETION_DISABLED,
|