Proyectos de Subversion Moodle

Rev

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

Rev 1 Rev 1441
Línea 16... Línea 16...
16
 
16
 
Línea 17... Línea 17...
17
declare(strict_types=1);
17
declare(strict_types=1);
Línea 18... Línea 18...
18
 
18
 
19
namespace core_course\reportbuilder\datasource;
-
 
20
 
19
namespace core_course\reportbuilder\datasource;
21
use context_course;
20
 
22
use core_reportbuilder_testcase;
21
use core\context\course;
23
use core_reportbuilder_generator;
-
 
24
use core_reportbuilder\local\filters\boolean_select;
-
 
25
use core_reportbuilder\local\filters\date;
-
 
26
use core_reportbuilder\local\filters\select;
-
 
27
use core_reportbuilder\local\filters\tags;
-
 
28
use core_reportbuilder\local\filters\text;
-
 
29
 
-
 
30
defined('MOODLE_INTERNAL') || die();
-
 
Línea 31... Línea 22...
31
 
22
use core_reportbuilder_generator;
32
global $CFG;
23
use core_reportbuilder\local\filters\{boolean_select, date, select, tags, text};
33
require_once("{$CFG->dirroot}/reportbuilder/tests/helpers.php");
24
use core_reportbuilder\tests\core_reportbuilder_testcase;
34
 
25
 
35
/**
26
/**
36
 * Unit tests for courses datasources
27
 * Unit tests for courses datasources
37
 *
28
 *
38
 * @package     core_course
29
 * @package     core_course
39
 * @covers      \core_course\reportbuilder\datasource\courses
30
 * @covers      \core_course\reportbuilder\datasource\courses
Línea 40... Línea 31...
40
 * @copyright   2021 Paul Holden <paulh@moodle.com>
31
 * @copyright   2021 Paul Holden <paulh@moodle.com>
41
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
32
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
42
 */
33
 */
43
class courses_test extends core_reportbuilder_testcase {
34
final class courses_test extends core_reportbuilder_testcase {
Línea 89... Línea 80...
89
        ]);
80
        ]);
90
        $course = $this->getDataGenerator()->create_course([
81
        $course = $this->getDataGenerator()->create_course([
91
            'category' => $category->id,
82
            'category' => $category->id,
92
            'fullname' => 'Cats',
83
            'fullname' => 'Cats',
93
            'summary' => 'Course description',
84
            'summary' => 'Course description',
-
 
85
            'lang' => 'en',
94
            'theme' => 'boost',
86
            'theme' => 'boost',
95
            'tags' => ['Horses'],
87
            'tags' => ['Horses'],
96
        ]);
88
        ]);
Línea 97... Línea 89...
97
 
89
 
98
        // Add a course image.
90
        // Add a course image.
99
        get_file_storage()->create_file_from_string([
91
        get_file_storage()->create_file_from_string([
100
            'contextid' => context_course::instance($course->id)->id,
92
            'contextid' => course::instance($course->id)->id,
101
            'component' => 'course',
93
            'component' => 'course',
102
            'filearea' => 'overviewfiles',
94
            'filearea' => 'overviewfiles',
103
            'itemid' => 0,
95
            'itemid' => 0,
104
            'filepath' => '/',
96
            'filepath' => '/',
Línea 168... Línea 160...
168
        $this->assertEquals(userdate($course->startdate), $coursestartdate);
160
        $this->assertEquals(userdate($course->startdate), $coursestartdate);
169
        $this->assertEmpty($courseenddate);
161
        $this->assertEmpty($courseenddate);
170
        $this->assertEquals('Yes', $coursevisible);
162
        $this->assertEquals('Yes', $coursevisible);
171
        $this->assertEquals('No groups', $coursegroupmode);
163
        $this->assertEquals('No groups', $coursegroupmode);
172
        $this->assertEquals('No', $coursegroupmodeforce);
164
        $this->assertEquals('No', $coursegroupmodeforce);
173
        $this->assertEmpty($courselang);
165
        $this->assertEquals('English ‎(en)‎', $courselang);
174
        $this->assertEmpty($coursecalendar);
166
        $this->assertEquals('Do not force', $coursecalendar);
175
        $this->assertEquals('Boost', $coursetheme);
167
        $this->assertEquals('Boost', $coursetheme);
176
        $this->assertEquals('No', $coursecompletion);
168
        $this->assertEquals('No', $coursecompletion);
177
        $this->assertEmpty($coursedownload);
169
        $this->assertEmpty($coursedownload);
178
        $this->assertEquals(userdate($course->timecreated), $coursetimecreated);
170
        $this->assertEquals(userdate($course->timecreated), $coursetimecreated);
179
        $this->assertEquals(userdate($course->timemodified), $coursetimemodified);
171
        $this->assertEquals(userdate($course->timemodified), $coursetimemodified);
Línea 226... Línea 218...
226
    /**
218
    /**
227
     * Data provider for {@see test_datasource_filters}
219
     * Data provider for {@see test_datasource_filters}
228
     *
220
     *
229
     * @return array[]
221
     * @return array[]
230
     */
222
     */
231
    public function datasource_filters_provider(): array {
223
    public static function datasource_filters_provider(): array {
232
        return [
224
        return [
233
            // Category.
225
            // Category.
234
            'Filter category name' => ['course_category:text', [
226
            'Filter category name' => ['course_category:text', [
235
                'course_category:text_operator' => text::IS_EQUAL_TO,
227
                'course_category:text_operator' => text::IS_EQUAL_TO,
236
                'course_category:text_value' => 'Animals',
228
                'course_category:text_value' => 'Animals',
Línea 280... Línea 272...
280
                'course:format_operator' => select::EQUAL_TO,
272
                'course:format_operator' => select::EQUAL_TO,
281
                'course:format_value' => 'topics',
273
                'course:format_value' => 'topics',
282
            ], true],
274
            ], true],
283
            'Filter course format (no match)' => ['course:format', [
275
            'Filter course format (no match)' => ['course:format', [
284
                'course:format_operator' => select::EQUAL_TO,
276
                'course:format_operator' => select::EQUAL_TO,
285
                'course:format_value' => 'weekly',
277
                'course:format_value' => 'weeks',
286
            ], false],
278
            ], false],
287
            'Filter course startdate' => ['course:startdate', [
279
            'Filter course startdate' => ['course:startdate', [
288
                'course:startdate_operator' => date::DATE_RANGE,
280
                'course:startdate_operator' => date::DATE_RANGE,
289
                'course:startdate_from' => 1622502000,
281
                'course:startdate_from' => 1622502000,
290
            ], true],
282
            ], true],
Línea 322... Línea 314...
322
                'course:lang_operator' => select::EQUAL_TO,
314
                'course:lang_operator' => select::EQUAL_TO,
323
                'course:lang_value' => 'en',
315
                'course:lang_value' => 'en',
324
            ], true],
316
            ], true],
325
            'Filter course lang (no match)' => ['course:lang', [
317
            'Filter course lang (no match)' => ['course:lang', [
326
                'course:lang_operator' => select::EQUAL_TO,
318
                'course:lang_operator' => select::EQUAL_TO,
327
                'course:lang_value' => 'de',
319
                'course:lang_value' => '',
328
            ], false],
320
            ], false],
329
            'Filter course calendartype' => ['course:calendartype', [
321
            'Filter course calendartype' => ['course:calendartype', [
330
                'course:calendartype_operator' => select::EQUAL_TO,
322
                'course:calendartype_operator' => select::EQUAL_TO,
331
                'course:calendartype_value' => 'gregorian',
323
                'course:calendartype_value' => 'gregorian',
332
            ], true],
324
            ], true],
333
            'Filter course calendartype (no match)' => ['course:calendartype', [
325
            'Filter course calendartype (no match)' => ['course:calendartype', [
334
                'course:calendartype_operator' => select::EQUAL_TO,
326
                'course:calendartype_operator' => select::EQUAL_TO,
335
                'course:calendartype_value' => 'hijri',
327
                'course:calendartype_value' => '',
336
            ], false],
328
            ], false],
337
            'Filter course theme' => ['course:theme', [
329
            'Filter course theme' => ['course:theme', [
338
                'course:theme_operator' => select::EQUAL_TO,
330
                'course:theme_operator' => select::EQUAL_TO,
339
                'course:theme_value' => 'boost',
331
                'course:theme_value' => 'boost',
340
            ], true],
332
            ], true],
Línea 414... Línea 406...
414
 
406
 
415
        /** @var core_reportbuilder_generator $generator */
407
        /** @var core_reportbuilder_generator $generator */
Línea 416... Línea 408...
416
        $generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
408
        $generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
417
 
409
 
418
        // Create report containing single column, and given filter.
410
        // Create report containing single column, and given filter.
Línea 419... Línea 411...
419
        $report = $generator->create_report(['name' => 'Tasks', 'source' => courses::class, 'default' => 0]);
411
        $report = $generator->create_report(['name' => 'Courses', 'source' => courses::class, 'default' => 0]);
420
        $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:fullname']);
412
        $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:fullname']);
421
 
413