Proyectos de Subversion Moodle

Rev

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

Rev 11 Rev 1441
Línea 28... Línea 28...
28
 * @package     tool_brickfield
28
 * @package     tool_brickfield
29
 * @copyright   2020 onward: Brickfield Education Labs, https://www.brickfield.ie
29
 * @copyright   2020 onward: Brickfield Education Labs, https://www.brickfield.ie
30
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
30
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
31
 * @coversDefaultClass \tool_brickfield\local\areas\core_question\base
31
 * @coversDefaultClass \tool_brickfield\local\areas\core_question\base
32
 */
32
 */
33
class questiontext_test extends area_test_base {
33
final class questiontext_test extends area_test_base {
34
    /**
34
    /**
35
     * Set up before class.
35
     * Set up before class.
36
     */
36
     */
37
    public static function setUpBeforeClass(): void {
37
    public static function setUpBeforeClass(): void {
38
        global $CFG;
38
        global $CFG;
39
        require_once($CFG->dirroot . '/mod/quiz/locallib.php');
39
        require_once($CFG->dirroot . '/mod/quiz/locallib.php');
40
    }
-
 
41
 
-
 
42
    /**
-
 
43
     * Test find course areas.
-
 
44
     */
-
 
45
    public function test_find_course_areas(): void {
-
 
46
        $this->resetAfterTest();
40
        parent::setUpBeforeClass();
47
        $this->setAdminUser();
-
 
48
 
-
 
49
        $category = $this->getDataGenerator()->create_category();
-
 
50
        $course = $this->getDataGenerator()->create_course(['category' => $category->id]);
-
 
51
        $coursecontext = \context_course::instance($course->id);
-
 
52
        $catcontext = \context_coursecat::instance($category->id);
-
 
53
        $generator = $this->getDataGenerator()->get_plugin_generator('core_question');
-
 
54
        $cat1 = $generator->create_question_category(['contextid' => $coursecontext->id]);
-
 
55
        $question1 = $generator->create_question('multichoice', null, ['category' => $cat1->id]);
-
 
56
        $question2 = $generator->create_question('multichoice', null, ['category' => $cat1->id]);
-
 
57
        $questiontext = new questiontext();
-
 
58
        $rs = $questiontext->find_course_areas($course->id);
-
 
59
        $this->assertNotNull($rs);
-
 
60
 
-
 
61
        $count = 0;
-
 
62
        foreach ($rs as $rec) {
-
 
63
            $count++;
-
 
64
            $this->assertEquals($coursecontext->id, $rec->contextid);
-
 
65
            $this->assertEquals($course->id, $rec->courseid);
-
 
66
            if ($count <= 1) {
-
 
67
                $this->assertEquals($question1->id, $rec->itemid);
-
 
68
            } else {
-
 
69
                $this->assertEquals($question2->id, $rec->itemid);
-
 
70
            }
-
 
71
        }
-
 
72
        $rs->close();
-
 
73
        $this->assertEquals(2, $count);
-
 
74
 
-
 
75
        // Add a question to a quiz in the course.
-
 
76
        $quiz = $this->getDataGenerator()->create_module('quiz', ['course' => $course->id, 'name' => 'Quiz1']);
-
 
77
        $quizmodule = get_coursemodule_from_instance('quiz', $quiz->id, $course->id);
-
 
78
        $quizcontext = \context_module::instance($quizmodule->id);
-
 
79
 
-
 
80
        // Add a question to the quiz context.
-
 
81
        $cat2 = $generator->create_question_category(['contextid' => $quizcontext->id]);
-
 
82
        $question3 = $generator->create_question('multichoice', null, ['category' => $cat2->id]);
-
 
83
        $rs2 = $questiontext->find_course_areas($course->id);
-
 
84
        $this->assertNotNull($rs2);
-
 
85
 
-
 
86
        $count = 0;
-
 
87
        foreach ($rs2 as $rec) {
-
 
88
            $count++;
-
 
89
            if ($count <= 1) {
-
 
90
                $this->assertEquals($coursecontext->id, $rec->contextid);
-
 
91
                $this->assertEquals($course->id, $rec->courseid);
-
 
92
                $this->assertEquals($question1->id, $rec->itemid);
-
 
93
            } else if ($count <= 2) {
-
 
94
                $this->assertEquals($coursecontext->id, $rec->contextid);
-
 
95
                $this->assertEquals($course->id, $rec->courseid);
-
 
96
                $this->assertEquals($question2->id, $rec->itemid);
-
 
97
            } else {
-
 
98
                $this->assertEquals($quizcontext->id, $rec->contextid);
-
 
99
                $this->assertEquals($course->id, $rec->courseid);
-
 
100
                $this->assertEquals($question3->id, $rec->itemid);
-
 
101
            }
-
 
102
        }
-
 
103
        $rs2->close();
-
 
104
        $this->assertEquals(3, $count);
-
 
105
 
-
 
106
        // Add a question to the category context.
-
 
107
        $cat3 = $generator->create_question_category(['contextid' => $catcontext->id]);
-
 
108
        $question4 = $generator->create_question('multichoice', null, ['category' => $cat3->id]);
-
 
109
        $rs3 = $questiontext->find_course_areas($course->id);
-
 
110
        $this->assertNotNull($rs3);
-
 
111
 
-
 
112
        // The category level questions should not be found.
-
 
113
        $count = 0;
-
 
114
        foreach ($rs3 as $rec) {
-
 
115
            $count++;
-
 
116
            if ($count > 2) {
-
 
117
                $this->assertEquals($quizcontext->id, $rec->contextid);
-
 
118
                $this->assertEquals($course->id, $rec->courseid);
-
 
119
                $this->assertEquals($question3->id, $rec->itemid);
-
 
120
            }
-
 
121
        }
-
 
122
        $rs2->close();
-
 
123
        $this->assertEquals(3, $count);
-
 
124
    }
41
    }
Línea 125... Línea 42...
125
 
42
 
126
    /**
43
    /**
127
     * Test find relevant areas.
44
     * Test find relevant areas.
128
     */
45
     */
129
    public function test_find_relevant_areas(): void {
46
    public function test_find_relevant_areas(): void {
130
        $this->resetAfterTest();
47
        $this->resetAfterTest();
Línea 131... Línea 48...
131
        $this->setAdminUser();
48
        $this->setAdminUser();
-
 
49
 
132
 
50
        $course = $this->getDataGenerator()->create_course();
133
        $course = $this->getDataGenerator()->create_course();
51
        $qbank = $this->getDataGenerator()->create_module('qbank', ['course' => $course->id]);
134
        $coursecontext = \context_course::instance($course->id);
52
        $qbankcontext = \context_module::instance($qbank->cmid);
135
        $generator = $this->getDataGenerator()->get_plugin_generator('core_question');
53
        $generator = $this->getDataGenerator()->get_plugin_generator('core_question');
136
        $cat1 = $generator->create_question_category(['contextid' => $coursecontext->id]);
54
        $cat1 = $generator->create_question_category(['contextid' => $qbankcontext->id]);
137
        $question1 = $generator->create_question('multichoice', null, ['category' => $cat1->id]);
55
        $question1 = $generator->create_question('multichoice', null, ['category' => $cat1->id]);
138
        $question2 = $generator->create_question('multichoice', null, ['category' => $cat1->id]);
56
        $question2 = $generator->create_question('multichoice', null, ['category' => $cat1->id]);
139
        $questiontext = new questiontext();
57
        $questiontext = new questiontext();
Línea 143... Línea 61...
143
        $this->assertNotNull($rs);
61
        $this->assertNotNull($rs);
Línea 144... Línea 62...
144
 
62
 
145
        $count = 0;
63
        $count = 0;
146
        foreach ($rs as $rec) {
64
        foreach ($rs as $rec) {
147
            $count++;
65
            $count++;
148
            $this->assertEquals($coursecontext->id, $rec->contextid);
66
            $this->assertEquals($qbankcontext->id, $rec->contextid);
149
            $this->assertEquals($course->id, $rec->courseid);
67
            $this->assertEquals($course->id, $rec->courseid);
150
            $this->assertEquals($question1->id, $rec->itemid);
68
            $this->assertEquals($question1->id, $rec->itemid);
151
        }
69
        }
152
        $rs->close();
70
        $rs->close();
153
        $this->assertEquals(1, $count);
71
        $this->assertEquals(1, $count);
Línea 154... Línea 72...
154
    }
72
    }
155
 
-
 
156
    /**
-
 
157
     * Test find system areas.
-
 
158
     */
-
 
159
    public function test_find_system_areas(): void {
-
 
160
        $this->resetAfterTest();
-
 
161
        $this->setAdminUser();
-
 
162
 
-
 
163
        $category = $this->getDataGenerator()->create_category();
-
 
164
        $catcontext = \context_coursecat::instance($category->id);
-
 
165
        $systemcontext = \context_system::instance();
-
 
166
        $generator = $this->getDataGenerator()->get_plugin_generator('core_question');
-
 
167
        $component = 'core_question';
-
 
168
 
-
 
169
        $cat = $generator->create_question_category(['contextid' => $catcontext->id]);
-
 
170
        $cat2 = $generator->create_question_category(['contextid' => $systemcontext->id]);
-
 
171
        $question = $generator->create_question('multichoice', null, ['category' => $cat2->id]);
-
 
172
        $question2 = $generator->create_question('multichoice', null, ['category' => $cat->id]);
-
 
173
        $questiontext = new questiontext();
-
 
174
        $areas = $this->array_from_recordset($questiontext->find_system_areas());
-
 
175
 
-
 
176
        // Assert the core_question area exists for the individual question's context, courseid and categoryid.
-
 
177
        $this->assert_area_in_array(
-
 
178
            $areas,
-
 
179
            $component,
-
 
180
            $systemcontext->id,
-
 
181
            $question->id,
-
 
182
            SITEID,
-
 
183
            null
-
 
184
        );
-
 
185
        $this->assert_area_in_array(
-
 
186
            $areas,
-
 
187
            $component,
-
 
188
            $catcontext->id,
-
 
189
            $question2->id,
-
 
190
            SITEID,
-
 
191
            $category->id
-
 
192
        );
-
 
193
    }
-
 
194
 
73
 
195
    /**
74
    /**
196
     * Test get course and category.
75
     * Test get course and category.
197
     *
76
     *
198
     * @covers ::get_course_and_category
77
     * @covers ::get_course_and_category
199
     */
78
     */
200
    public function test_get_course_and_category(): void {
79
    public function test_get_course_and_category(): void {
Línea 201... Línea 80...
201
        $this->resetAfterTest();
80
        $this->resetAfterTest();
-
 
81
        $this->setAdminUser();
202
        $this->setAdminUser();
82
 
203
 
83
        $course = $this->getDataGenerator()->create_course();
204
        $course = $this->getDataGenerator()->create_course();
84
        $qbank = $this->getDataGenerator()->create_module('qbank', ['course' => $course->id]);
205
        $coursecontext = \context_course::instance($course->id);
85
        $qbankcontext = \context_module::instance($qbank->cmid);
206
        $generator = $this->getDataGenerator()->get_plugin_generator('core_question');
86
        $generator = $this->getDataGenerator()->get_plugin_generator('core_question');
207
        $cat1 = $generator->create_question_category(['contextid' => $coursecontext->id]);
-
 
208
        $question1 = $generator->create_question('multichoice', null, ['category' => $cat1->id]);
87
        $cat1 = $generator->create_question_category(['contextid' => $qbankcontext->id]);
209
        $event = \core\event\question_updated::create_from_question_instance($question1,
88
        $question1 = $generator->create_question('multichoice', null, ['category' => $cat1->id]);
210
            \context_course::instance($course->id));
-
 
211
        $rs = base::get_course_and_category(CONTEXT_COURSE, $event->objectid);
89
        $event = \core\event\question_updated::create_from_question_instance($question1, $qbankcontext);
212
        $this->assertNotNull($rs);
90
        $rs = base::get_course_and_category(CONTEXT_MODULE, $event->objectid);
213
        $this->assertEquals(CONTEXT_COURSE, $rs->contextlevel);
91
        $this->assertNotNull($rs);
214
        $this->assertNotEquals(CONTEXT_MODULE, $rs->contextlevel);
92
        $this->assertEquals(CONTEXT_MODULE, $rs->contextlevel);
215
        // Invalid objectid.
-
 
216
        $rs = base::get_course_and_category(CONTEXT_COURSE, 0);
-
 
217
        $this->assertFalse($rs);
93
        // Invalid objectid and contextlevel.
218
        // Incorrect objectid.
94
        $rs = base::get_course_and_category(CONTEXT_COURSE, 0);
219
        $rs = base::get_course_and_category(CONTEXT_COURSE, 100);
95
        $this->assertFalse($rs);