Proyectos de Subversion Moodle

Rev

Rev 11 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 11 Rev 1441
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,