MDL-55956 mod: New function *_get_group_override_priorities()
[moodle.git] / mod / lesson / tests / lib_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 mod/lesson/lib.php.
19  *
20  * @package    mod_lesson
21  * @category   test
22  * @copyright  2017 Jun Pataleta
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU Public License
24  */
26 defined('MOODLE_INTERNAL') || die();
28 global $CFG;
29 require_once($CFG->dirroot . '/mod/lesson/lib.php');
31 /**
32  * Unit tests for mod/lesson/lib.php.
33  *
34  * @copyright  2017 Jun Pataleta
35  * @license    http://www.gnu.org/copyleft/gpl.html GNU Public License
36  */
37 class mod_lesson_lib_testcase extends advanced_testcase {
38     /**
39      * Test for lesson_get_group_override_priorities().
40      */
41     public function test_lesson_get_group_override_priorities() {
42         global $DB;
43         $this->resetAfterTest();
44         $this->setAdminUser();
46         $dg = $this->getDataGenerator();
47         $course = $dg->create_course();
48         $lessonmodule = $this->getDataGenerator()->create_module('lesson', array('course' => $course->id));
50         $this->assertNull(lesson_get_group_override_priorities($lessonmodule->id));
52         $group1 = $this->getDataGenerator()->create_group(array('courseid' => $course->id));
53         $group2 = $this->getDataGenerator()->create_group(array('courseid' => $course->id));
55         $now = 100;
56         $override1 = (object)[
57             'lessonid' => $lessonmodule->id,
58             'groupid' => $group1->id,
59             'available' => $now,
60             'deadline' => $now + 20
61         ];
62         $DB->insert_record('lesson_overrides', $override1);
64         $override2 = (object)[
65             'lessonid' => $lessonmodule->id,
66             'groupid' => $group2->id,
67             'available' => $now - 10,
68             'deadline' => $now + 10
69         ];
70         $DB->insert_record('lesson_overrides', $override2);
72         $priorities = lesson_get_group_override_priorities($lessonmodule->id);
73         $this->assertNotEmpty($priorities);
75         $openpriorities = $priorities['open'];
76         // Override 2's time open has higher priority since it is sooner than override 1's.
77         $this->assertEquals(1, $openpriorities[$override1->available]);
78         $this->assertEquals(2, $openpriorities[$override2->available]);
80         $closepriorities = $priorities['close'];
81         // Override 1's time close has higher priority since it is later than override 2's.
82         $this->assertEquals(2, $closepriorities[$override1->deadline]);
83         $this->assertEquals(1, $closepriorities[$override2->deadline]);
84     }
85 }