Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
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
    }