02bbd881afde9bd7fd77f1554ba15372afb555d8
[moodle.git] / course / tests / content_item_readonly_repository_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  * Contains the test class for the content_item_readonly_repository class.
19  *
20  * @package    core
21  * @subpackage course
22  * @copyright  2020 Jake Dallimore <jrhdallimore@gmail.com>
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
25 namespace tests\core_course;
27 defined('MOODLE_INTERNAL') || die();
29 use core_course\local\entity\content_item;
30 use core_course\local\repository\content_item_readonly_repository;
32 /**
33  * The test class for the content_item_readonly_repository class.
34  *
35  * @copyright  2020 Jake Dallimore <jrhdallimore@gmail.com>
36  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
37  */
38 class content_item_readonly_repository_testcase extends \advanced_testcase {
39     /**
40      * Test the repository method, find_all_for_course().
41      */
42     public function test_find_all_for_course() {
43         $this->resetAfterTest();
45         $course = $this->getDataGenerator()->create_course();
46         $user = $this->getDataGenerator()->create_and_enrol($course, 'editingteacher');
47         $cir = new content_item_readonly_repository();
49         $items = $cir->find_all_for_course($course, $user);
50         foreach ($items as $key => $item) {
51             $this->assertInstanceOf(content_item::class, $item);
52             $this->assertEquals($course->id, $item->get_link()->param('id'));
53             $this->assertNotNull($item->get_link()->param('add'));
54         }
55     }
57     /**
58      * Test verifying that content items for hidden modules are not returned.
59      */
60     public function test_find_all_for_course_hidden_module() {
61         $this->resetAfterTest();
62         global $DB;
64         $course = $this->getDataGenerator()->create_course();
65         $user = $this->getDataGenerator()->create_and_enrol($course, 'editingteacher');
66         $cir = new content_item_readonly_repository();
68         // Hide a module.
69         $module = $DB->get_record('modules', ['id' => 1]);
70         $DB->set_field("modules", "visible", "0", ["id" => $module->id]);
72         $items = $cir->find_all_for_course($course, $user);
73         $this->assertArrayNotHasKey($module->name, $items);
74     }
75 }