MDL-80722 reportbuilder: add time created/modified to course entity.
Tidy up unit tests for course report, removing some redundancy and duplication.
This commit is contained in:
@@ -18,9 +18,10 @@ declare(strict_types=1);
|
||||
|
||||
namespace core_course\reportbuilder\datasource;
|
||||
|
||||
use core_course_category;
|
||||
use core_reportbuilder_generator;
|
||||
use core_reportbuilder_testcase;
|
||||
use core_reportbuilder\local\filters\{select, text};
|
||||
use core_reportbuilder\local\filters\{category, select, text};
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
@@ -126,7 +127,12 @@ class categories_test extends core_reportbuilder_testcase {
|
||||
|
||||
return [
|
||||
// Category.
|
||||
'Filter category' => ['course_category:name', [
|
||||
'course_category:name_operator' => category::NOT_EQUAL_TO,
|
||||
'course_category:name_value' => -1,
|
||||
], true],
|
||||
'Filter category (no match)' => ['course_category:name', [
|
||||
'course_category:name_operator' => category::EQUAL_TO,
|
||||
'course_category:name_value' => -1,
|
||||
], false],
|
||||
'Filter category name' => ['course_category:text', [
|
||||
@@ -202,7 +208,8 @@ class categories_test extends core_reportbuilder_testcase {
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
$category = $this->getDataGenerator()->create_category(['name' => 'Zoo', 'idnumber' => 'Z01']);
|
||||
// Get the default category, modify it so we can filter each value.
|
||||
($category = core_course_category::get_default())->update(['name' => 'Zoo', 'idnumber' => 'Z01']);
|
||||
$course = $this->getDataGenerator()->create_course(['category' => $category->id, 'fullname' => 'Zebra']);
|
||||
|
||||
// Add a cohort.
|
||||
|
||||
@@ -22,7 +22,6 @@ use context_course;
|
||||
use core_reportbuilder_testcase;
|
||||
use core_reportbuilder_generator;
|
||||
use core_reportbuilder\local\filters\boolean_select;
|
||||
use core_reportbuilder\local\filters\category;
|
||||
use core_reportbuilder\local\filters\date;
|
||||
use core_reportbuilder\local\filters\select;
|
||||
use core_reportbuilder\local\filters\tags;
|
||||
@@ -109,12 +108,6 @@ class courses_test extends core_reportbuilder_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'Courses', 'source' => courses::class, 'default' => 0]);
|
||||
|
||||
// Category.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course_category:namewithlink']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course_category:path']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course_category:idnumber']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course_category:description']);
|
||||
|
||||
// Course.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:coursefullnamewithlink']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:courseshortnamewithlink']);
|
||||
@@ -131,10 +124,11 @@ class courses_test extends core_reportbuilder_testcase {
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:theme']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:enablecompletion']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:downloadcontent']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:timecreated']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:timemodified']);
|
||||
|
||||
// Tags.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'tag:name']);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'tag:namewithlink']);
|
||||
|
||||
// File entity.
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'file:name']);
|
||||
@@ -142,37 +136,52 @@ class courses_test extends core_reportbuilder_testcase {
|
||||
$content = $this->get_custom_report_content($report->get('id'));
|
||||
$this->assertCount(1, $content);
|
||||
|
||||
$courserow = array_values($content[0]);
|
||||
|
||||
// Category.
|
||||
$this->assertStringContainsString($category->get_formatted_name(), $courserow[0]);
|
||||
$this->assertEquals($category->get_nested_name(false), $courserow[1]);
|
||||
$this->assertEquals($category->idnumber, $courserow[2]);
|
||||
$this->assertEquals(format_text($category->description, $category->descriptionformat), $courserow[3]);
|
||||
[
|
||||
$coursenamewithlink,
|
||||
$courseshortnamewithlink,
|
||||
$courseidnumberwithlink,
|
||||
$coursesummary,
|
||||
$courseformat,
|
||||
$coursestartdate,
|
||||
$courseenddate,
|
||||
$coursevisible,
|
||||
$coursegroupmode,
|
||||
$coursegroupmodeforce,
|
||||
$courselang,
|
||||
$coursecalendar,
|
||||
$coursetheme,
|
||||
$coursecompletion,
|
||||
$coursedownload,
|
||||
$coursetimecreated,
|
||||
$coursetimemodified,
|
||||
$tagname,
|
||||
$filename,
|
||||
] = array_values($content[0]);
|
||||
|
||||
// Course.
|
||||
$this->assertStringContainsString($course->fullname, $courserow[4]);
|
||||
$this->assertStringContainsString($course->shortname, $courserow[5]);
|
||||
$this->assertStringContainsString($course->idnumber, $courserow[6]);
|
||||
$this->assertEquals(format_text($course->summary, $course->summaryformat), $courserow[7]);
|
||||
$this->assertEquals('Custom sections', $courserow[8]);
|
||||
$this->assertEquals(userdate($course->startdate), $courserow[9]);
|
||||
$this->assertEmpty($courserow[10]);
|
||||
$this->assertEquals('Yes', $courserow[11]);
|
||||
$this->assertEquals('No groups', $courserow[12]);
|
||||
$this->assertEquals('No', $courserow[13]);
|
||||
$this->assertEmpty($courserow[14]);
|
||||
$this->assertEmpty($courserow[15]);
|
||||
$this->assertEmpty($courserow[16]);
|
||||
$this->assertEquals('No', $courserow[17]);
|
||||
$this->assertEmpty($courserow[18]);
|
||||
$this->assertStringContainsString($course->fullname, $coursenamewithlink);
|
||||
$this->assertStringContainsString($course->shortname, $courseshortnamewithlink);
|
||||
$this->assertStringContainsString($course->idnumber, $courseidnumberwithlink);
|
||||
$this->assertEquals(format_text($course->summary, $course->summaryformat), $coursesummary);
|
||||
$this->assertEquals('Custom sections', $courseformat);
|
||||
$this->assertEquals(userdate($course->startdate), $coursestartdate);
|
||||
$this->assertEmpty($courseenddate);
|
||||
$this->assertEquals('Yes', $coursevisible);
|
||||
$this->assertEquals('No groups', $coursegroupmode);
|
||||
$this->assertEquals('No', $coursegroupmodeforce);
|
||||
$this->assertEmpty($courselang);
|
||||
$this->assertEmpty($coursecalendar);
|
||||
$this->assertEmpty($coursetheme);
|
||||
$this->assertEquals('No', $coursecompletion);
|
||||
$this->assertEmpty($coursedownload);
|
||||
$this->assertEquals(userdate($course->timecreated), $coursetimecreated);
|
||||
$this->assertEquals(userdate($course->timemodified), $coursetimemodified);
|
||||
|
||||
// Tags.
|
||||
$this->assertEquals('Horses', $courserow[19]);
|
||||
$this->assertStringContainsString('Horses', $courserow[20]);
|
||||
$this->assertEquals('Horses', $tagname);
|
||||
|
||||
// File.
|
||||
$this->assertEquals('HelloWorld.jpg', $courserow[21]);
|
||||
$this->assertEquals('HelloWorld.jpg', $filename);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -221,14 +230,6 @@ class courses_test extends core_reportbuilder_testcase {
|
||||
public function datasource_filters_provider(): array {
|
||||
return [
|
||||
// Category.
|
||||
'Filter category' => ['course_category:name', [
|
||||
'course_category:name_operator' => category::NOT_EQUAL_TO,
|
||||
'course_category:name_value' => -1,
|
||||
], true],
|
||||
'Filter category (no match)' => ['course_category:name', [
|
||||
'course_category:name_operator' => category::EQUAL_TO,
|
||||
'course_category:name_value' => -1,
|
||||
], false],
|
||||
'Filter category name' => ['course_category:text', [
|
||||
'course_category:text_operator' => text::IS_EQUAL_TO,
|
||||
'course_category:text_value' => 'Animals',
|
||||
@@ -237,14 +238,6 @@ class courses_test extends core_reportbuilder_testcase {
|
||||
'course_category:text_operator' => text::IS_EQUAL_TO,
|
||||
'course_category:text_value' => 'Fruit',
|
||||
], false],
|
||||
'Filter category idnumber' => ['course_category:idnumber', [
|
||||
'course_category:idnumber_operator' => text::IS_EQUAL_TO,
|
||||
'course_category:idnumber_value' => 'CAT101',
|
||||
], true],
|
||||
'Filter category idnumber (no match)' => ['course_category:idnumber', [
|
||||
'course_category:idnumber_operator' => text::CONTAINS,
|
||||
'course_category:idnumber_value' => 'FRUIT',
|
||||
], false],
|
||||
|
||||
// Course.
|
||||
'Filter course' => ['course:courseselector', [
|
||||
@@ -360,6 +353,22 @@ class courses_test extends core_reportbuilder_testcase {
|
||||
'Filter course downloadcontent (no match)' => ['course:downloadcontent', [
|
||||
'course:downloadcontent_operator' => boolean_select::NOT_CHECKED,
|
||||
], false],
|
||||
'Filter course timecreated' => ['course:timecreated', [
|
||||
'course:timecreated_operator' => date::DATE_RANGE,
|
||||
'course:timecreated_from' => 1622502000,
|
||||
], true],
|
||||
'Filter course timecreated (no match)' => ['course:timecreated', [
|
||||
'course:timecreated_operator' => date::DATE_RANGE,
|
||||
'course:timecreated_to' => 1622502000,
|
||||
], false],
|
||||
'Filter course timemodified' => ['course:timemodified', [
|
||||
'course:timemodified_operator' => date::DATE_RANGE,
|
||||
'course:timemodified_from' => 1622502000,
|
||||
], true],
|
||||
'Filter course timemodified (no match)' => ['course:timemodified', [
|
||||
'course:timemodified_operator' => date::DATE_RANGE,
|
||||
'course:timemodified_to' => 1622502000,
|
||||
], false],
|
||||
|
||||
// Tags.
|
||||
'Filter tag name' => ['tag:name', [
|
||||
@@ -389,7 +398,7 @@ class courses_test extends core_reportbuilder_testcase {
|
||||
public function test_datasource_filters(string $filtername, array $filtervalues, bool $expectmatch): void {
|
||||
$this->resetAfterTest();
|
||||
|
||||
$category = $this->getDataGenerator()->create_category(['name' => 'Animals', 'idnumber' => 'CAT101']);
|
||||
$category = $this->getDataGenerator()->create_category(['name' => 'Animals']);
|
||||
$course = $this->getDataGenerator()->create_course([
|
||||
'category' => $category->id,
|
||||
'fullname' => 'Equine',
|
||||
|
||||
@@ -143,6 +143,8 @@ class course extends base {
|
||||
'theme' => new lang_string('forcetheme'),
|
||||
'enablecompletion' => new lang_string('enablecompletion', 'completion'),
|
||||
'downloadcontent' => new lang_string('downloadcoursecontent', 'course'),
|
||||
'timecreated' => new lang_string('timecreated', 'core_reportbuilder'),
|
||||
'timemodified' => new lang_string('timemodified', 'core_reportbuilder'),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -177,6 +179,8 @@ class course extends base {
|
||||
break;
|
||||
case 'startdate':
|
||||
case 'enddate':
|
||||
case 'timecreated':
|
||||
case 'timemodified':
|
||||
$fieldtype = column::TYPE_TIMESTAMP;
|
||||
break;
|
||||
case 'summary':
|
||||
|
||||
Reference in New Issue
Block a user