Files
moodle/admin/tool/dataprivacy/tests/metadata_registry_test.php
T
Eloy Lafuente (stronk7) 85f47bae7f MDL-65204 phpunit: various fixes to assertions
Namely:
   - 3rd param of assertEquals() cannot be null.
   - Some incorrect uses of assertNotEmpty().
   - Comparing 2 strings now uses strict (===) evaluation.
       Link: https://github.com/sebastianbergmann/phpunit/issues/3185
     Solution here is one of:
       a) Return to the previous situation, making the comparison
          softer. That can achieved by forcing different types, so
          float == string works.
       b) Changing APIs (both forms and database return strings) to
          perform some conversion to floats. That would make float
          comparison (with floats or strings) to work too.
     The patch here follows the a) approach. Changing all the internals
     for proper float handling sounds excesive when it has been working
     perfectly since ever. So we went the easier route, just getting
     rid of the new === comparisons when needed by changing expectation
     types to float.
2019-04-03 10:39:19 +08:00

106 lines
3.8 KiB
PHP

<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Metadata registry tests.
*
* @package tool_dataprivacy
* @copyright 2018 Adrian Greeve <adriangreeve.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
global $CFG;
/**
* Metadata registry tests.
*
* @package tool_dataprivacy
* @copyright 2018 Adrian Greeve <adriangreeve.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class tool_dataprivacy_metadata_registry_testcase extends advanced_testcase {
/**
* Fetch the meta data and return it in a form that we can easily unit test.
*
* @return array the meta data.
*/
protected function get_meta_data() {
$metadataregistry = new \tool_dataprivacy\metadata_registry();
$data = $metadataregistry->get_registry_metadata();
$newdata = [];
foreach ($data as $value) {
$additional = [];
foreach ($value['plugins'] as $moredata) {
$additional[$moredata['raw_component']] = $moredata;
}
$newdata[$value['plugin_type_raw']] = $additional;
}
return $newdata;
}
/**
* Test that we can fetch metadata about users for the whole system and that it matches the system count.
*/
public function test_get_registry_metadata_count() {
$data = $this->get_meta_data();
$plugintypes = \core_component::get_plugin_types();
// Check that we have the correct number of plugin types.
$plugincount = count($plugintypes) + 1; // Plus one for core.
$this->assertEquals($plugincount, count($data));
// Check that each plugin count matches.
foreach ($plugintypes as $plugintype => $notused) {
$plugins = \core_component::get_plugin_list($plugintype);
$this->assertEquals(count($plugins), count($data[$plugintype]));
}
// Let's check core subsystems.
// The Privacy API adds an extra component in the form of 'core'.
$coresubsystems = \core_component::get_core_subsystems();
$this->assertEquals(count($coresubsystems) + 1, count($data['core']));
}
/**
* Check that the expected null provider information is returned.
*/
public function test_get_registry_metadata_null_provider_details() {
$data = $this->get_meta_data();
// Check details of core privacy (a null privder) are correct.
$coreprivacy = $data['core']['core_privacy'];
$this->assertEquals(1, $coreprivacy['compliant']);
$this->assertNotEmpty($coreprivacy['nullprovider']);
}
/**
* Check that the expected privacy provider information is returned.
*/
public function test_get_registry_metadata_provider_details() {
$data = $this->get_meta_data();
// Check details of core rating (a normal provider) are correct.
$corerating = $data['core']['core_rating'];
$this->assertEquals(1, $corerating['compliant']);
$this->assertNotEmpty($corerating['metadata']);
$this->assertEquals('database_table', $corerating['metadata'][0]['type']);
$this->assertNotEmpty($corerating['metadata'][0]['fields']);
}
}