From 92211f291fb0b08f1764d1a6a5fb35c6806dc6d8 Mon Sep 17 00:00:00 2001 From: Carlos Castillo Date: Wed, 10 Apr 2024 10:05:56 +0200 Subject: [PATCH] MDL-81489 reportbuilder: Optional tags when create/update reports Make tags property optional when create/update report. --- .../classes/local/helpers/report.php | 12 +++++--- .../tests/local/helpers/report_test.php | 29 ++++++++++++++++--- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/reportbuilder/classes/local/helpers/report.php b/reportbuilder/classes/local/helpers/report.php index 4471e0b1163..fbc5d1b472f 100644 --- a/reportbuilder/classes/local/helpers/report.php +++ b/reportbuilder/classes/local/helpers/report.php @@ -63,8 +63,10 @@ class report { } // Report tags. - core_tag_tag::set_item_tags('core_reportbuilder', 'reportbuilder_report', $report->get('id'), - $report->get_context(), $data->tags); + if (property_exists($data, "tags")) { + core_tag_tag::set_item_tags('core_reportbuilder', 'reportbuilder_report', $report->get('id'), + $report->get_context(), $data->tags); + } return $report; } @@ -87,8 +89,10 @@ class report { ])->update(); // Report tags. - core_tag_tag::set_item_tags('core_reportbuilder', 'reportbuilder_report', $report->get('id'), - $report->get_context(), $data->tags); + if (property_exists($data, "tags")) { + core_tag_tag::set_item_tags('core_reportbuilder', 'reportbuilder_report', $report->get('id'), + $report->get_context(), $data->tags); + } return $report; } diff --git a/reportbuilder/tests/local/helpers/report_test.php b/reportbuilder/tests/local/helpers/report_test.php index dcb198f935c..b7b2da60c5c 100644 --- a/reportbuilder/tests/local/helpers/report_test.php +++ b/reportbuilder/tests/local/helpers/report_test.php @@ -45,15 +45,25 @@ class report_test extends advanced_testcase { $this->setAdminUser(); $report = report::create_report((object) [ - 'name' => 'My report', + 'name' => 'My report with tags', 'source' => users::class, 'tags' => ['cat', 'dog'], ]); - $this->assertEquals('My report', $report->get('name')); + $this->assertEquals('My report with tags', $report->get('name')); $this->assertEquals(datasource::TYPE_CUSTOM_REPORT, $report->get('type')); $this->assertEqualsCanonicalizing(['cat', 'dog'], core_tag_tag::get_item_tags_array('core_reportbuilder', 'reportbuilder_report', $report->get('id'))); + + $report = report::create_report((object) [ + 'name' => 'My report without tags', + 'source' => users::class, + ]); + + $this->assertEquals('My report without tags', $report->get('name')); + $this->assertEquals(datasource::TYPE_CUSTOM_REPORT, $report->get('type')); + $this->assertEmpty(core_tag_tag::get_item_tags_array('core_reportbuilder', 'reportbuilder_report', + $report->get('id'))); } /** @@ -69,12 +79,23 @@ class report_test extends advanced_testcase { $reportupdated = report::update_report((object) [ 'id' => $report->get('id'), - 'name' => 'My renamed report', + 'name' => 'My renamed report without add tags', + 'uniquerows' => 1, + ]); + + $this->assertEquals('My renamed report without add tags', $reportupdated->get('name')); + $this->assertTrue($reportupdated->get('uniquerows')); + $this->assertEmpty(core_tag_tag::get_item_tags_array('core_reportbuilder', 'reportbuilder_report', + $reportupdated->get('id'))); + + $reportupdated = report::update_report((object) [ + 'id' => $report->get('id'), + 'name' => 'My renamed report adding tags', 'uniquerows' => 1, 'tags' => ['cat', 'dog'], ]); - $this->assertEquals('My renamed report', $reportupdated->get('name')); + $this->assertEquals('My renamed report adding tags', $reportupdated->get('name')); $this->assertTrue($reportupdated->get('uniquerows')); $this->assertEqualsCanonicalizing(['cat', 'dog'], core_tag_tag::get_item_tags_array('core_reportbuilder', 'reportbuilder_report', $reportupdated->get('id')));