| Línea 17... |
Línea 17... |
| 17 |
declare(strict_types=1);
|
17 |
declare(strict_types=1);
|
| Línea 18... |
Línea 18... |
| 18 |
|
18 |
|
| Línea 19... |
Línea 19... |
| 19 |
namespace core_reportbuilder\external\reports;
|
19 |
namespace core_reportbuilder\external\reports;
|
| - |
|
20 |
|
| 20 |
|
21 |
use context_system;
|
| 21 |
use context_system;
|
22 |
use core_customfield_generator;
|
| 22 |
use core_reportbuilder_generator;
|
23 |
use core_reportbuilder_generator;
|
| 23 |
use core_external\external_api;
|
24 |
use core_external\external_api;
|
| 24 |
use externallib_advanced_testcase;
|
- |
|
| 25 |
use core_reportbuilder\report_access_exception;
|
25 |
use externallib_advanced_testcase;
|
| Línea 26... |
Línea 26... |
| 26 |
use core_reportbuilder\local\models\report;
|
26 |
use core_reportbuilder\exception\report_access_exception;
|
| Línea 27... |
Línea 27... |
| 27 |
use core_user\reportbuilder\datasource\users;
|
27 |
use core_user\reportbuilder\datasource\users;
|
| Línea 37... |
Línea 37... |
| 37 |
* @package core_reportbuilder
|
37 |
* @package core_reportbuilder
|
| 38 |
* @covers \core_reportbuilder\external\reports\listing
|
38 |
* @covers \core_reportbuilder\external\reports\listing
|
| 39 |
* @copyright 2022 Paul Holden <paulh@moodle.com>
|
39 |
* @copyright 2022 Paul Holden <paulh@moodle.com>
|
| 40 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
40 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
| 41 |
*/
|
41 |
*/
|
| 42 |
class listing_test extends externallib_advanced_testcase {
|
42 |
final class listing_test extends externallib_advanced_testcase {
|
| Línea 43... |
Línea 43... |
| 43 |
|
43 |
|
| 44 |
/**
|
44 |
/**
|
| 45 |
* Text execute method
|
45 |
* Text execute method
|
| 46 |
*/
|
46 |
*/
|
| 47 |
public function test_execute(): void {
|
47 |
public function test_execute(): void {
|
| 48 |
$this->resetAfterTest();
|
48 |
$this->resetAfterTest();
|
| Línea -... |
Línea 49... |
| - |
|
49 |
$this->setAdminUser();
|
| - |
|
50 |
|
| - |
|
51 |
/** @var core_customfield_generator $generator */
|
| - |
|
52 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_customfield');
|
| - |
|
53 |
$category = $generator->create_category(['component' => 'core_reportbuilder', 'area' => 'report']);
|
| - |
|
54 |
$generator->create_field([
|
| - |
|
55 |
'categoryid' => $category->get('id'),
|
| - |
|
56 |
'name' => 'My field',
|
| - |
|
57 |
'shortname' => 'myfield',
|
| - |
|
58 |
'type' => 'number',
|
| 49 |
$this->setAdminUser();
|
59 |
]);
|
| 50 |
|
60 |
|
| Línea 51... |
Línea 61... |
| 51 |
/** @var core_reportbuilder_generator $generator */
|
61 |
/** @var core_reportbuilder_generator $generator */
|
| 52 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
62 |
$generator = $this->getDataGenerator()->get_plugin_generator('core_reportbuilder');
|
| - |
|
63 |
|
| - |
|
64 |
// Create three reports.
|
| - |
|
65 |
$reportone = $generator->create_report([
|
| - |
|
66 |
'name' => 'Report one',
|
| - |
|
67 |
'source' => users::class,
|
| 53 |
|
68 |
'tags' => ['cat', 'dog'],
|
| 54 |
// Create three reports.
|
69 |
'customfield_myfield' => 42,
|
| Línea 55... |
Línea 70... |
| 55 |
$reportone = $generator->create_report(['name' => 'Report one', 'source' => users::class]);
|
70 |
]);
|
| 56 |
$reporttwo = $generator->create_report(['name' => 'Report two', 'source' => users::class]);
|
71 |
$reporttwo = $generator->create_report(['name' => 'Report two', 'source' => users::class]);
|
| Línea 65... |
Línea 80... |
| 65 |
|
80 |
|
| 66 |
// Switch to second user, get their report listing.
|
81 |
// Switch to second user, get their report listing.
|
| 67 |
$result = listing::execute();
|
82 |
$result = listing::execute();
|
| Línea -... |
Línea 83... |
| - |
|
83 |
$result = external_api::clean_returnvalue(listing::execute_returns(), $result);
|
| 68 |
$result = external_api::clean_returnvalue(listing::execute_returns(), $result);
|
84 |
|
| - |
|
85 |
// All data is generated by exporters, just assert relevant sample of each.
|
| - |
|
86 |
$this->assertEquals(['Report one', 'Report two'], array_column($result['reports'], 'name'));
|
| - |
|
87 |
|
| - |
|
88 |
$tagscolumn = array_column($result['reports'], 'tags');
|
| - |
|
89 |
$this->assertEquals([
|
| - |
|
90 |
['cat', 'dog'],
|
| - |
|
91 |
[],
|
| - |
|
92 |
], array_map(fn(array $tags) => array_column($tags, 'name'), $tagscolumn));
|
| - |
|
93 |
|
| - |
|
94 |
$customfieldscolumn = array_column($result['reports'], 'customfields');
|
| - |
|
95 |
$this->assertEquals([
|
| - |
|
96 |
['42'],
|
| - |
|
97 |
[null],
|
| 69 |
|
98 |
], array_map(fn(array $customfields) => array_column($customfields['data'], 'value'), $customfieldscolumn));
|
| 70 |
$this->assertEquals(['Report one', 'Report two'], array_column($result['reports'], 'name'));
|
99 |
|
| Línea 71... |
Línea 100... |
| 71 |
$this->assertEmpty($result['warnings']);
|
100 |
$this->assertEmpty($result['warnings']);
|
| 72 |
}
|
101 |
}
|