Merge branch 'MDL-61984-master-fixup' of https://github.com/FMCorz/moodle
[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      * Runs before each test is performed.
42      */
43     public function setUp() {
44         $this->resetAfterTest();
45     }
47     /**
48      * Ensure that valid SQL results in the relevant contexts being added.
49      */
50     public function test_add_from_sql() {
51         global $DB;
53         $sql = "SELECT c.id FROM {context} c";
54         $params = [];
55         $allcontexts = $DB->get_records_sql($sql, $params);
57         $uit = new contextlist();
58         $uit->add_from_sql($sql, $params);
60         $this->assertCount(count($allcontexts), $uit);
61     }
63     /**
64      * Ensure that valid system context id is added.
65      */
66     public function test_add_system_context() {
67         $cl = new contextlist();
68         $cl->add_system_context();
70         $this->assertCount(1, $cl);
72         foreach ($cl->get_contexts() as $context) {
73             $this->assertEquals(SYSCONTEXTID, $context->id);
74         }
75     }
77     /**
78      * Ensure that a valid user context id is added.
79      */
80     public function test_add_user_context() {
81         $user = $this->getDataGenerator()->create_user();
82         $this->getDataGenerator()->create_user();
84         $cl = new contextlist();
85         $cl->add_user_context($user->id);
87         $this->assertCount(1, $cl);
89         foreach ($cl->get_contexts() as $context) {
90             $this->assertEquals(\context_user::instance($user->id)->id, $context->id);
91         }
92     }
94     /**
95      * Ensure that valid user contexts are added.
96      */
97     public function test_add_user_contexts() {
98         $user1 = $this->getDataGenerator()->create_user();
99         $user2 = $this->getDataGenerator()->create_user();
100         $this->getDataGenerator()->create_user();
102         $cl = new contextlist();
103         $cl->add_user_contexts([$user1->id, $user2->id]);
105         $this->assertCount(2, $cl);
107         $contexts = $cl->get_contextids();
108         $this->assertContains(\context_user::instance($user1->id)->id, $contexts);
109         $this->assertContains(\context_user::instance($user2->id)->id, $contexts);
110     }