%PDF- %PDF-
Direktori : /home2/vacivi36/ava/admin/tool/admin_presets/tests/local/action/ |
Current File : //home2/vacivi36/ava/admin/tool/admin_presets/tests/local/action/delete_test.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/>. namespace tool_admin_presets\local\action; /** * Tests for the delete class. * * @package tool_admin_presets * @category test * @copyright 2021 Sara Arjona (sara@moodle.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @coversDefaultClass \tool_admin_presets\local\action\delete */ class delete_test extends \advanced_testcase { /** * Test the behaviour of execute() method. * * @covers ::execute */ public function test_delete_execute(): void { global $DB; $this->resetAfterTest(); $this->setAdminUser(); // Create some presets. $generator = $this->getDataGenerator()->get_plugin_generator('core_adminpresets'); $presetid1 = $generator->create_preset(['name' => 'Preset 1', 'applypreset' => true]); $presetid2 = $generator->create_preset(['name' => 'Preset 2']); $currentpresets = $DB->count_records('adminpresets'); $currentitems = $DB->count_records('adminpresets_it'); $currentadvitems = $DB->count_records('adminpresets_it_a'); $currentplugins = $DB->count_records('adminpresets_plug'); // Only preset1 has been applied. $this->assertCount(1, $DB->get_records('adminpresets_app')); // Only the preset1 settings that have changed: enablebadges, mediawidth and maxanswers. $this->assertCount(3, $DB->get_records('adminpresets_app_it')); // Only the preset1 advanced settings that have changed: maxanswers_adv. $this->assertCount(1, $DB->get_records('adminpresets_app_it_a')); // Only the preset1 plugins that have changed: enrol_guest and mod_glossary. $this->assertCount(2, $DB->get_records('adminpresets_app_plug')); // Initialise the parameters and create the delete class. $_POST['action'] = 'delete'; $_POST['mode'] = 'execute'; $_POST['id'] = $presetid1; $_POST['sesskey'] = sesskey(); $action = new delete(); $sink = $this->redirectEvents(); try { $action->execute(); } catch (\exception $e) { // If delete action was successfull, redirect should be called so we will encounter an // 'unsupported redirect error' moodle_exception. $this->assertInstanceOf(\moodle_exception::class, $e); } finally { // Check the preset data has been removed. $presets = $DB->get_records('adminpresets'); $this->assertCount($currentpresets - 1, $presets); $preset = reset($presets); $this->assertArrayHasKey($presetid2, $presets); // Check preset items. $this->assertCount($currentitems - 4, $DB->get_records('adminpresets_it')); $this->assertCount(0, $DB->get_records('adminpresets_it', ['adminpresetid' => $presetid1])); // Check preset advanced items. $this->assertCount($currentadvitems - 1, $DB->get_records('adminpresets_it_a')); // Check preset plugins. $this->assertCount($currentplugins - 3, $DB->get_records('adminpresets_plug')); $this->assertCount(0, $DB->get_records('adminpresets_plug', ['adminpresetid' => $presetid1])); // Check preset applied tables are empty now. $this->assertCount(0, $DB->get_records('adminpresets_app')); $this->assertCount(0, $DB->get_records('adminpresets_app_it')); $this->assertCount(0, $DB->get_records('adminpresets_app_it_a')); $this->assertCount(0, $DB->get_records('adminpresets_app_plug')); // Check the delete event has been raised. $events = $sink->get_events(); $sink->close(); $event = reset($events); $this->assertInstanceOf('\\tool_admin_presets\\event\\preset_deleted', $event); } } /** * Test the behaviour of execute() method when the preset id doesn't exist. * * @covers ::execute */ public function test_delete_execute_unexisting_preset(): void { $this->resetAfterTest(); $this->setAdminUser(); // Create some presets. $generator = $this->getDataGenerator()->get_plugin_generator('core_adminpresets'); $presetid = $generator->create_preset(['name' => 'Preset 1']); // Initialise the parameters and create the delete class. $_POST['action'] = 'delete'; $_POST['mode'] = 'execute'; $_POST['id'] = $presetid * 2; // Unexisting preset identifier. $_POST['sesskey'] = sesskey(); $action = new delete(); $this->expectException(\moodle_exception::class); $action->execute(); } /** * Test the behaviour of show() method when the preset id doesn't exist. * * @covers ::show */ public function test_delete_show_unexisting_preset(): void { $this->resetAfterTest(); $this->setAdminUser(); // Create some presets. $generator = $this->getDataGenerator()->get_plugin_generator('core_adminpresets'); $presetid = $generator->create_preset(['name' => 'Preset 1']); // Initialise the parameters and create the delete class. $_POST['action'] = 'delete'; $_POST['mode'] = 'show'; $_POST['id'] = $presetid * 2; // Unexisting preset identifier. $action = new delete(); $this->expectException(\moodle_exception::class); $action->show(); } }