Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
namespace core\moodlenet;
18
 
19
use core\context\user;
20
 
21
/**
22
 * Test coverage for moodlenet course packager.
23
 *
24
 * @package   core
25
 * @copyright 2023 Safat Shahin <safat.shahin@moodle.com>
26
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
27
 * @coversDefaultClass \core\moodlenet\course_packager
28
 */
29
class course_packager_test extends \advanced_testcase {
30
 
31
    /**
32
     * Test fetching and overriding a backup task setting.
33
     *
34
     * @covers ::override_task_setting
35
     * @covers ::get_all_task_settings
36
     * @covers ::get_backup_controller
37
     */
38
    public function test_override_task_setting(): void {
39
        global $USER;
40
        $this->resetAfterTest();
41
        $this->setAdminUser();
42
 
43
        $generator = $this->getDataGenerator();
44
        $course = $generator->create_course();
45
 
46
        // Load the course packager.
47
        $packager = new course_packager($course, $USER->id);
48
 
49
        // Fetch all backup task settings.
50
        $rc = new \ReflectionClass(course_packager::class);
51
        $rcmgetbackup = $rc->getMethod('get_backup_controller');
52
        $controller = $rcmgetbackup->invoke($packager);
53
        $rcmgetall = $rc->getMethod('get_all_task_settings');
54
        $tasksettings = $rcmgetall->invoke($packager, $controller);
55
 
56
        // Fetch the default settings and grab an example value (setting_root_users).
57
        $rootsettings = $tasksettings[\backup_root_task::class];
58
        $testsettingname = 'setting_root_users';
59
 
60
        $oldvalue = 99;
61
        foreach ($rootsettings as $setting) {
62
            $name = $setting->get_ui_name();
63
            if ($name == $testsettingname) {
64
                $oldvalue = $setting->get_value();
65
                break;
66
            }
67
        }
68
 
69
        // Check we found the setting value (either 0 or 1 are valid).
70
        $this->assertNotEquals(99, $oldvalue);
71
        $this->assertLessThanOrEqual(1, $oldvalue);
72
 
73
        // Override the setting_root_users value, then re-fetch the settings to check the change is reflected.
74
        $overridevalue = ($oldvalue == 1) ? 0 : 1;
75
        $rcmoverridesetting = $rc->getMethod('override_task_setting');
76
        $rcmoverridesetting->invoke($packager, $tasksettings, $testsettingname, $overridevalue);
77
        $tasksettings = $rcmgetall->invoke($packager, $controller);
78
        $rootsettings = $tasksettings[\backup_root_task::class];
79
 
80
        $newvalue = 99;
81
        foreach ($rootsettings as $setting) {
82
            $name = $setting->get_ui_name();
83
            if ($name == $testsettingname) {
84
                $newvalue = $setting->get_value();
85
                break;
86
            }
87
        }
88
 
89
        $this->assertEquals($overridevalue, $newvalue);
90
 
91
        // We have finished with the backup controller, so destroy it.
92
        $controller->destroy();
93
    }
94
 
95
    /**
96
     * Test the course package file.
97
     *
98
     * @covers ::get_package
99
     * @covers ::package
100
     */
101
    public function test_get_package(): void {
102
        global $USER;
103
        $this->resetAfterTest();
104
        $this->setAdminUser();
105
 
106
        $currenttime = time();
107
        $generator = $this->getDataGenerator();
108
        $course = $generator->create_course();
109
 
110
        // Load the course packager.
111
        $packager = new course_packager($course, $USER->id);
112
        $package = $packager->get_package();
113
 
114
        // Confirm the expected stored_file object is returned.
115
        $this->assertInstanceOf(\stored_file::class, $package);
116
 
117
        // Check some known values in the returned stored_file object to confirm they match the file we have packaged.
118
        $this->assertNotEmpty($package->get_contenthash());
119
        $this->assertEquals(user::instance($USER->id)->id, $package->get_contextid());
120
        $this->assertEquals('user', $package->get_component());
121
        $this->assertEquals('draft', $package->get_filearea());
122
        $this->assertEquals($course->shortname . '_backup.mbz', $package->get_filename());
123
        $this->assertGreaterThan(0, $package->get_filesize());
124
        $timecreated = $package->get_timecreated();
125
        $this->assertGreaterThanOrEqual($currenttime, $timecreated);
126
        $this->assertEquals($timecreated, $package->get_timemodified());
127
    }
128
}