diff --git a/badges/tests/reportbuilder/datasource/badges_test.php b/badges/tests/reportbuilder/datasource/badges_test.php index 06db5e24162..7a420a0c1b1 100644 --- a/badges/tests/reportbuilder/datasource/badges_test.php +++ b/badges/tests/reportbuilder/datasource/badges_test.php @@ -92,6 +92,43 @@ class badges_test extends core_reportbuilder_testcase { }, $content)); } + /** + * Test datasource using course/user entities that each contain tags + */ + public function test_datasource_course_user_tags(): void { + $this->resetAfterTest(); + $this->setAdminUser(); + + $course = $this->getDataGenerator()->create_course(['tags' => ['horse']]); + $user = $this->getDataGenerator()->create_user(['interests' => ['pie']]); + + // Create course badge, issue to user. + $badge = $this->create_badge(['name' => 'Course badge', 'type' => BADGE_TYPE_COURSE, 'courseid' => $course->id]); + $badge->issue($user->id, true); + + /** @var core_reportbuilder_generator $generator */ + $generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder'); + + // Create our report. + $report = $generator->create_report(['name' => 'Badges', 'source' => badges::class, 'default' => 0]); + $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'badge:name']); + $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:fullname']); + $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'course:tags']); + $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:fullname']); + $generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:interests']); + + $content = $this->get_custom_report_content($report->get('id')); + + $this->assertCount(1, $content); + $this->assertEquals([ + $badge->name, + $course->fullname, + 'horse', + fullname($user), + 'pie', + ], array_values($content[0])); + } + /** * Helper method to create a badge * diff --git a/reportbuilder/classes/local/entities/course.php b/reportbuilder/classes/local/entities/course.php index 2c49d15421e..f897c8476a8 100644 --- a/reportbuilder/classes/local/entities/course.php +++ b/reportbuilder/classes/local/entities/course.php @@ -60,8 +60,8 @@ class course extends base { return [ 'course' => 'c', 'context' => 'cctx', - 'tag_instance' => 'ti', - 'tag' => 't', + 'tag_instance' => 'cti', + 'tag' => 'ct', ]; } diff --git a/reportbuilder/classes/local/entities/user.php b/reportbuilder/classes/local/entities/user.php index 5cca7765356..0545f5c3315 100644 --- a/reportbuilder/classes/local/entities/user.php +++ b/reportbuilder/classes/local/entities/user.php @@ -59,8 +59,8 @@ class user extends base { return [ 'user' => 'u', 'context' => 'uctx', - 'tag_instance' => 'ti', - 'tag' => 't', + 'tag_instance' => 'uti', + 'tag' => 'ut', ]; }