. declare(strict_types=1); namespace core\plugininfo; use advanced_testcase; /** * Unit tests for the dataformat plugininfo class * * @package core * @covers \core\plugininfo\dataformat * @copyright 2022 Paul Holden * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class dataformat_test extends advanced_testcase { /** * Helper method, to allow easy filtering of default formats in order to perform assertions without any third-party * formats affecting expected results * * @param string $format * @return bool */ private function filter_default_plugins(string $format): bool { $defaultformats = ['csv', 'excel', 'html', 'json', 'ods', 'pdf']; return in_array($format, $defaultformats); } /** * Test getting enabled plugins */ public function test_get_enabled_plugins(): void { $this->resetAfterTest(); // Check all default formats. $plugins = array_filter(dataformat::get_enabled_plugins(), [$this, 'filter_default_plugins']); $this->assertEquals([ 'csv' => 'csv', 'excel' => 'excel', 'html' => 'html', 'json' => 'json', 'ods' => 'ods', 'pdf' => 'pdf', ], $plugins); // Disable excel & html. dataformat::enable_plugin('excel', 0); dataformat::enable_plugin('html', 0); $plugins = array_filter(dataformat::get_enabled_plugins(), [$this, 'filter_default_plugins']); $this->assertEquals([ 'csv' => 'csv', 'json' => 'json', 'ods' => 'ods', 'pdf' => 'pdf', ], $plugins); } /** * Test getting enabled plugins obeys configured sortorder */ public function test_get_enabled_plugins_sorted(): void { $this->resetAfterTest(); set_config('dataformat_plugins_sortorder', 'csv,pdf,excel,json,html,ods'); $plugins = array_filter(dataformat::get_enabled_plugins(), [$this, 'filter_default_plugins']); $this->assertEquals([ 'csv' => 'csv', 'pdf' => 'pdf', 'excel' => 'excel', 'json' => 'json', 'html' => 'html', 'ods' => 'ods', ], $plugins); } }