1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 declare(strict_types=1); 18 19 namespace core_reportbuilder\local\filters; 20 21 use advanced_testcase; 22 use core_reportbuilder\local\report\filter; 23 24 /** 25 * Unit tests for course selector filter 26 * 27 * @package core_reportbuilder 28 * @covers \core_reportbuilder\local\filters\base 29 * @covers \core_reportbuilder\local\filters\autocomplete 30 * @copyright 2022 Nathan Nguyen <nathannguyen@catalyst-au.net> 31 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 32 */ 33 class autocomplete_test extends advanced_testcase { 34 35 /** 36 * Data provider for {@see test_get_sql_filter} 37 * 38 * @return array 39 */ 40 public function get_sql_filter_provider(): array { 41 return [ 42 [[], ["Course 1 full name", "Course 2 full name", "Course 3 full name", "PHPUnit test site"]], 43 [["course1", "course3"], ["Course 1 full name", "Course 3 full name"]], 44 [["course1"], ["Course 1 full name"]], 45 ]; 46 } 47 48 /** 49 * Test getting filter SQL 50 * 51 * @param array $shortnames list of course short name 52 * @param array $expected list of course full name 53 * 54 * @dataProvider get_sql_filter_provider 55 */ 56 public function test_get_sql_filter(array $shortnames, array $expected): void { 57 global $DB; 58 59 $this->resetAfterTest(); 60 61 // Create courses as values for autocompletion. 62 $course1 = $this->getDataGenerator()->create_course([ 63 'fullname' => "Course 1 full name", 64 'shortname' => 'course1', 65 ]); 66 67 $course2 = $this->getDataGenerator()->create_course([ 68 'fullname' => "Course 2 full name", 69 'shortname' => 'course2', 70 ]); 71 72 $course3 = $this->getDataGenerator()->create_course([ 73 'fullname' => "Course 3 full name", 74 'shortname' => 'course3', 75 ]); 76 77 $filter = (new filter( 78 autocomplete::class, 79 'test', 80 new \lang_string('course'), 81 'testentity', 82 'shortname' 83 ))->set_options([ 84 $course1->shortname => $course1->fullname, 85 $course2->shortname => $course2->fullname, 86 $course3->shortname => $course3->fullname, 87 ]); 88 89 [$select, $params] = text::create($filter)->get_sql_filter([ 90 $filter->get_unique_identifier() . '_values' => $shortnames, 91 ]); 92 $fullnames = $DB->get_fieldset_select('course', 'fullname', $select, $params); 93 $this->assertEqualsCanonicalizing($expected, $fullnames); 94 95 } 96 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body