MDL-80203 courseformat: Fix some typos and PHPDoc
[moodle.git] / lib / tests / cron_test.php
blobcc2673da217c4bd2e66d9ed7f3191cd24336ef54
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.
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/>.
17 namespace core;
19 /**
20 * Tests for core\cron.
22 * @package core
23 * @copyright 2023 Andrew Nicols <andrew@nicols.co.uk>
24 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25 * @covers \core\cron
27 class cron_test extends \advanced_testcase {
28 /**
29 * Reset relevant caches between tests.
31 public function setUp(): void {
32 cron::reset_user_cache();
35 /**
36 * Test the setup_user function.
38 * @covers ::setup_user
39 * @covers ::reset_user_cache
41 public function test_setup_user(): void {
42 // This function uses the $GLOBALS super global. Disable the VariableNameLowerCase sniff for this function.
43 // phpcs:disable moodle.NamingConventions.ValidVariableName.VariableNameLowerCase
44 global $PAGE, $USER, $SESSION, $SITE, $CFG;
45 $this->resetAfterTest();
47 $admin = get_admin();
48 $user1 = $this->getDataGenerator()->create_user();
49 $user2 = $this->getDataGenerator()->create_user();
50 $course = $this->getDataGenerator()->create_course();
52 cron::setup_user();
53 $this->assertSame($admin->id, $USER->id);
54 $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
55 $this->assertSame($CFG->timezone, $USER->timezone);
56 $this->assertSame('', $USER->lang);
57 $this->assertSame('', $USER->theme);
58 $SESSION->test1 = true;
59 $adminsession = $SESSION;
60 $adminuser = $USER;
61 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
62 $this->assertSame($GLOBALS['SESSION'], $SESSION);
63 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
64 $this->assertSame($GLOBALS['USER'], $USER);
66 cron::setup_user(null, $course);
67 $this->assertSame($admin->id, $USER->id);
68 $this->assertSame($PAGE->context, \context_course::instance($course->id));
69 $this->assertSame($adminsession, $SESSION);
70 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
71 $this->assertSame($GLOBALS['SESSION'], $SESSION);
72 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
73 $this->assertSame($GLOBALS['USER'], $USER);
75 cron::setup_user($user1);
76 $this->assertSame($user1->id, $USER->id);
77 $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
78 $this->assertNotSame($adminsession, $SESSION);
79 $this->assertObjectNotHasProperty('test1', $SESSION);
80 $this->assertEmpty((array)$SESSION);
81 $usersession1 = $SESSION;
82 $SESSION->test2 = true;
83 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
84 $this->assertSame($GLOBALS['SESSION'], $SESSION);
85 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
86 $this->assertSame($GLOBALS['USER'], $USER);
88 cron::setup_user($user1);
89 $this->assertSame($user1->id, $USER->id);
90 $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
91 $this->assertNotSame($adminsession, $SESSION);
92 $this->assertSame($usersession1, $SESSION);
93 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
94 $this->assertSame($GLOBALS['SESSION'], $SESSION);
95 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
96 $this->assertSame($GLOBALS['USER'], $USER);
98 cron::setup_user($user2);
99 $this->assertSame($user2->id, $USER->id);
100 $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
101 $this->assertNotSame($adminsession, $SESSION);
102 $this->assertNotSame($usersession1, $SESSION);
103 $this->assertEmpty((array)$SESSION);
104 $usersession2 = $SESSION;
105 $usersession2->test3 = true;
106 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
107 $this->assertSame($GLOBALS['SESSION'], $SESSION);
108 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
109 $this->assertSame($GLOBALS['USER'], $USER);
111 cron::setup_user($user2, $course);
112 $this->assertSame($user2->id, $USER->id);
113 $this->assertSame($PAGE->context, \context_course::instance($course->id));
114 $this->assertNotSame($adminsession, $SESSION);
115 $this->assertNotSame($usersession1, $SESSION);
116 $this->assertSame($usersession2, $SESSION);
117 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
118 $this->assertSame($GLOBALS['SESSION'], $SESSION);
119 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
120 $this->assertSame($GLOBALS['USER'], $USER);
122 cron::setup_user($user1);
123 $this->assertSame($user1->id, $USER->id);
124 $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
125 $this->assertNotSame($adminsession, $SESSION);
126 $this->assertNotSame($usersession1, $SESSION);
127 $this->assertEmpty((array)$SESSION);
128 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
129 $this->assertSame($GLOBALS['SESSION'], $SESSION);
130 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
131 $this->assertSame($GLOBALS['USER'], $USER);
133 cron::setup_user();
134 $this->assertSame($admin->id, $USER->id);
135 $this->assertSame($PAGE->context, \context_course::instance($SITE->id));
136 $this->assertSame($adminsession, $SESSION);
137 $this->assertSame($adminuser, $USER);
138 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
139 $this->assertSame($GLOBALS['SESSION'], $SESSION);
140 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
141 $this->assertSame($GLOBALS['USER'], $USER);
143 cron::reset_user_cache();
144 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
145 $this->assertSame($GLOBALS['SESSION'], $SESSION);
146 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
147 $this->assertSame($GLOBALS['USER'], $USER);
149 cron::setup_user();
150 $this->assertNotSame($adminsession, $SESSION);
151 $this->assertNotSame($adminuser, $USER);
152 $this->assertSame($GLOBALS['SESSION'], $_SESSION['SESSION']);
153 $this->assertSame($GLOBALS['SESSION'], $SESSION);
154 $this->assertSame($GLOBALS['USER'], $_SESSION['USER']);
155 $this->assertSame($GLOBALS['USER'], $USER);
157 // phpcs:enable