| 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 | 
             
  |