mirror of
https://github.com/moodle/moodle.git
synced 2025-03-28 03:22:38 +01:00
Merge branch 'MDL-81433' of https://github.com/paulholden/moodle
This commit is contained in:
commit
7c535198ea
@ -24,6 +24,7 @@ use core\external\persistent_exporter;
|
||||
use core_reportbuilder\datasource;
|
||||
use core_reportbuilder\manager;
|
||||
use core_reportbuilder\local\models\report;
|
||||
use core_tag\external\{tag_item_exporter, util};
|
||||
use core_user\external\user_summary_exporter;
|
||||
|
||||
/**
|
||||
@ -58,6 +59,10 @@ class custom_report_details_exporter extends persistent_exporter {
|
||||
'type' => PARAM_RAW,
|
||||
'null' => NULL_ALLOWED,
|
||||
],
|
||||
'tags' => [
|
||||
'type' => tag_item_exporter::read_properties_definition(),
|
||||
'multiple' => true,
|
||||
],
|
||||
'modifiedby' => ['type' => user_summary_exporter::read_properties_definition()],
|
||||
];
|
||||
}
|
||||
@ -74,6 +79,7 @@ class custom_report_details_exporter extends persistent_exporter {
|
||||
|
||||
return [
|
||||
'sourcename' => manager::report_source_exists($source, datasource::class) ? $source::get_name() : null,
|
||||
'tags' => util::get_item_tags('core_reportbuilder', 'reportbuilder_report', $this->persistent->get('id')),
|
||||
'modifiedby' => (new user_summary_exporter($usermodified))->export($output),
|
||||
];
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ use core_user\reportbuilder\datasource\users;
|
||||
* @copyright 2022 Paul Holden <paulh@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class custom_report_details_exporter_test extends advanced_testcase {
|
||||
final class custom_report_details_exporter_test extends advanced_testcase {
|
||||
|
||||
/**
|
||||
* Test exported data structure
|
||||
@ -45,7 +45,7 @@ class custom_report_details_exporter_test extends advanced_testcase {
|
||||
|
||||
/** @var core_reportbuilder_generator $generator */
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
$report = $generator->create_report(['name' => 'My report', 'source' => users::class]);
|
||||
$report = $generator->create_report(['name' => 'My report', 'source' => users::class, 'tags' => ['cat', 'dog']]);
|
||||
|
||||
$exporter = new custom_report_details_exporter($report);
|
||||
$export = $exporter->export($PAGE->get_renderer('core_reportbuilder'));
|
||||
@ -55,8 +55,13 @@ class custom_report_details_exporter_test extends advanced_testcase {
|
||||
$this->assertEquals($report->get('source'), $export->source);
|
||||
|
||||
// Source name should be the name of the source.
|
||||
$this->assertObjectHasProperty('sourcename', $export);
|
||||
$this->assertEquals(users::get_name(), $export->sourcename);
|
||||
|
||||
// We use the tag exporter for report tags.
|
||||
$this->assertObjectHasProperty('tags', $export);
|
||||
$this->assertEquals(['cat', 'dog'], array_column($export->tags, 'name'));
|
||||
|
||||
// We use the user exporter for the modifier of the report.
|
||||
$this->assertObjectHasProperty('modifiedby', $export);
|
||||
$this->assertEquals(fullname($user), $export->modifiedby->fullname);
|
||||
|
@ -39,7 +39,7 @@ require_once("{$CFG->dirroot}/webservice/tests/helpers.php");
|
||||
* @copyright 2022 Paul Holden <paulh@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class listing_test extends externallib_advanced_testcase {
|
||||
final class listing_test extends externallib_advanced_testcase {
|
||||
|
||||
/**
|
||||
* Text execute method
|
||||
@ -52,7 +52,7 @@ class listing_test extends externallib_advanced_testcase {
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
|
||||
// Create three reports.
|
||||
$reportone = $generator->create_report(['name' => 'Report one', 'source' => users::class]);
|
||||
$reportone = $generator->create_report(['name' => 'Report one', 'source' => users::class, 'tags' => ['cat', 'dog']]);
|
||||
$reporttwo = $generator->create_report(['name' => 'Report two', 'source' => users::class]);
|
||||
$reportthree = $generator->create_report(['name' => 'Report three', 'source' => users::class]);
|
||||
|
||||
@ -67,7 +67,15 @@ class listing_test extends externallib_advanced_testcase {
|
||||
$result = listing::execute();
|
||||
$result = external_api::clean_returnvalue(listing::execute_returns(), $result);
|
||||
|
||||
// All data is generated by exporters, just assert relevant sample of each.
|
||||
$this->assertEquals(['Report one', 'Report two'], array_column($result['reports'], 'name'));
|
||||
|
||||
$tagscolumn = array_column($result['reports'], 'tags');
|
||||
$this->assertEquals([
|
||||
['cat', 'dog'],
|
||||
[],
|
||||
], array_map(fn(array $tags) => array_column($tags, 'name'), $tagscolumn));
|
||||
|
||||
$this->assertEmpty($result['warnings']);
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ require_once("{$CFG->dirroot}/webservice/tests/helpers.php");
|
||||
* @copyright 2022 Paul Holden <paulh@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class retrieve_test extends externallib_advanced_testcase {
|
||||
final class retrieve_test extends externallib_advanced_testcase {
|
||||
|
||||
/**
|
||||
* Text execute method
|
||||
@ -52,7 +52,8 @@ class retrieve_test extends externallib_advanced_testcase {
|
||||
/** @var core_reportbuilder_generator $generator */
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
||||
|
||||
$report = $generator->create_report(['name' => 'My report', 'source' => users::class, 'default' => false]);
|
||||
$report = $generator->create_report(['name' => 'My report', 'source' => users::class, 'default' => false,
|
||||
'tags' => ['cat', 'dog']]);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:fullname', 'sortenabled' => 1]);
|
||||
$generator->create_column(['reportid' => $report->get('id'), 'uniqueidentifier' => 'user:email']);
|
||||
|
||||
@ -63,6 +64,7 @@ class retrieve_test extends externallib_advanced_testcase {
|
||||
// All data is generated by exporters, just assert relevant sample of each.
|
||||
$this->assertArrayHasKey('details', $result);
|
||||
$this->assertEquals('My report', $result['details']['name']);
|
||||
$this->assertEquals(['cat', 'dog'], array_column($result['details']['tags'], 'name'));
|
||||
|
||||
$this->assertArrayHasKey('data', $result);
|
||||
$this->assertEquals(['Full name', 'Email address'], $result['data']['headers']);
|
||||
@ -81,8 +83,10 @@ class retrieve_test extends externallib_advanced_testcase {
|
||||
$result = retrieve::execute($report->get('id'), 1, 2);
|
||||
$result = external_api::clean_returnvalue(retrieve::execute_returns(), $result);
|
||||
|
||||
// All data is generated by exporters, just assert relevant sample of each.
|
||||
$this->assertArrayHasKey('details', $result);
|
||||
$this->assertEquals('My report', $result['details']['name']);
|
||||
$this->assertEquals(['cat', 'dog'], array_column($result['details']['tags'], 'name'));
|
||||
|
||||
$this->assertArrayHasKey('data', $result);
|
||||
$this->assertEquals(['Full name', 'Email address'], $result['data']['headers']);
|
||||
|
@ -1,6 +1,12 @@
|
||||
This file describes API changes in /reportbuilder/*
|
||||
Information provided here is intended especially for developers.
|
||||
|
||||
=== 4.5 ===
|
||||
|
||||
* The following external methods now return tags data relevant to each custom report:
|
||||
- `core_reportbuilder_list_reports`
|
||||
- `core_reportbuilder_retrieve_report`
|
||||
|
||||
=== 4.4 ===
|
||||
|
||||
* New methods `get_identity_[columns|filters]` in user entity, for retrieving all user identity field report elements
|
||||
|
Loading…
x
Reference in New Issue
Block a user