MDL-62140 core_privacy: only reset tests when necessary
[moodle.git] / privacy / tests / contextlist_test.php
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/>.
17 /**
18  * Unit Tests for the approved contextlist Class
19  *
20  * @package     core_privacy
21  * @category    test
22  * @copyright   2018 Andrew Nicols <andrew@nicols.co.uk>
23  * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26 defined('MOODLE_INTERNAL') || die();
28 global $CFG;
30 use \core_privacy\local\request\contextlist;
32 /**
33  * Tests for the \core_privacy API's approved contextlist functionality.
34  *
35  * @copyright   2018 Andrew Nicols <andrew@nicols.co.uk>
36  * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
37  */
38 class contextlist_test extends advanced_testcase {
40     /**
41      * Ensure that valid SQL results in the relevant contexts being added.
42      */
43     public function test_add_from_sql() {
44         global $DB;
46         $sql = "SELECT c.id FROM {context} c";
47         $params = [];
48         $allcontexts = $DB->get_records_sql($sql, $params);
50         $uit = new contextlist();
51         $uit->add_from_sql($sql, $params);
53         $this->assertCount(count($allcontexts), $uit);
54     }
56     /**
57      * Ensure that valid system context id is added.
58      */
59     public function test_add_system_context() {
60         $cl = new contextlist();
61         $cl->add_system_context();
63         $this->assertCount(1, $cl);
65         foreach ($cl->get_contexts() as $context) {
66             $this->assertEquals(SYSCONTEXTID, $context->id);
67         }
68     }
70     /**
71      * Ensure that a valid user context id is added.
72      */
73     public function test_add_user_context() {
74         $this->resetAfterTest();
76         $user = $this->getDataGenerator()->create_user();
78         $cl = new contextlist();
79         $cl->add_user_context($user->id);
81         $this->assertCount(1, $cl);
83         foreach ($cl->get_contexts() as $context) {
84             $this->assertEquals(\context_user::instance($user->id)->id, $context->id);
85         }
86     }
88     /**
89      * Ensure that valid user contexts are added.
90      */
91     public function test_add_user_contexts() {
92         $this->resetAfterTest();
94         $user1 = $this->getDataGenerator()->create_user();
95         $user2 = $this->getDataGenerator()->create_user();
97         $cl = new contextlist();
98         $cl->add_user_contexts([$user1->id, $user2->id]);
100         $this->assertCount(2, $cl);
102         $contexts = $cl->get_contextids();
103         $this->assertContains(\context_user::instance($user1->id)->id, $contexts);
104         $this->assertContains(\context_user::instance($user2->id)->id, $contexts);
105     }