Merge branch 'MDL-38424_m23' of git://github.com/kordan/moodle into MOODLE_23_STABLE
[moodle.git] / lib / tests / grouplib_test.php
blob3f256b2faccf1ff4d2582ee94b0925cfa7d00a9d
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 /**
18 * Tests events subsystems
20 * @package core
21 * @subpackage group
22 * @copyright 2007 onwards Martin Dougiamas (http://dougiamas.com)
23 * @author Andrew Nicols
24 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
27 defined('MOODLE_INTERNAL') || die();
29 class grouplib_testcase extends advanced_testcase {
31 public function test_groups_get_group_by_idnumber() {
32 $this->resetAfterTest(true);
34 $generator = $this->getDataGenerator();
36 // Create a course category and course
37 $cat = $generator->create_category(array('parent' => 0));
38 $course = $generator->create_course(array('category' => $cat->id));
40 $idnumber1 = 'idnumber1';
41 $idnumber2 = 'idnumber2';
43 /**
44 * Test with an empty and a null idnumber
46 // An empty idnumber should always return a false value
47 $this->assertFalse(groups_get_group_by_idnumber($course->id, ''));
48 $this->assertFalse(groups_get_group_by_idnumber($course->id, null));
50 // Even when a group exists which also has an empty idnumber
51 $generator->create_group(array('courseid' => $course->id));
52 $this->assertFalse(groups_get_group_by_idnumber($course->id, ''));
53 $this->assertFalse(groups_get_group_by_idnumber($course->id, null));
55 /**
56 * Test with a valid idnumber
58 // There is no matching idnumber at present
59 $this->assertFalse(groups_get_group_by_idnumber($course->id, $idnumber1));
61 // We should now have a valid group returned by the idnumber search
62 $group = $generator->create_group(array('courseid' => $course->id, 'idnumber' => $idnumber1));
63 $this->assertEquals(groups_get_group_by_idnumber($course->id, $idnumber1), $group);
65 // An empty idnumber should still return false
66 $this->assertFalse(groups_get_group_by_idnumber($course->id, ''));
67 $this->assertFalse(groups_get_group_by_idnumber($course->id, null));
69 /**
70 * Test with another idnumber
72 // There is no matching idnumber at present
73 $this->assertFalse(groups_get_group_by_idnumber($course->id, $idnumber2));
75 // We should now have a valid group returned by the idnumber search
76 $group = $generator->create_group(array('courseid' => $course->id, 'idnumber' => $idnumber2));
77 $this->assertEquals(groups_get_group_by_idnumber($course->id, $idnumber2), $group);
79 /**
80 * Group idnumbers are unique within a course so test that we don't
81 * retrieve groups for the first course
84 // Create a second course
85 $course = $generator->create_course(array('category' => $cat->id));
87 // An empty idnumber should always return a false value
88 $this->assertFalse(groups_get_group_by_idnumber($course->id, ''));
89 $this->assertFalse(groups_get_group_by_idnumber($course->id, null));
91 // Our existing idnumbers shouldn't be returned here as we're in a different course
92 $this->assertFalse(groups_get_group_by_idnumber($course->id, $idnumber1));
93 $this->assertFalse(groups_get_group_by_idnumber($course->id, $idnumber2));
95 // We should be able to reuse the idnumbers again since this is a different course
96 $group = $generator->create_group(array('courseid' => $course->id, 'idnumber' => $idnumber1));
97 $this->assertEquals(groups_get_group_by_idnumber($course->id, $idnumber1), $group);
99 $group = $generator->create_group(array('courseid' => $course->id, 'idnumber' => $idnumber2));
100 $this->assertEquals(groups_get_group_by_idnumber($course->id, $idnumber2), $group);
103 public function test_groups_get_grouping_by_idnumber() {
104 $this->resetAfterTest(true);
106 $generator = $this->getDataGenerator();
108 // Create a course category and course
109 $cat = $generator->create_category(array('parent' => 0));
110 $course = $generator->create_course(array('category' => $cat->id));
112 $idnumber1 = 'idnumber1';
113 $idnumber2 = 'idnumber2';
116 * Test with an empty and a null idnumber
118 // An empty idnumber should always return a false value
119 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, ''));
120 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, null));
122 // Even when a grouping exists which also has an empty idnumber
123 $generator->create_grouping(array('courseid' => $course->id));
124 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, ''));
125 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, null));
128 * Test with a valid idnumber
130 // There is no matching idnumber at present
131 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, $idnumber1));
133 // We should now have a valid group returned by the idnumber search
134 $grouping = $generator->create_grouping(array('courseid' => $course->id, 'idnumber' => $idnumber1));
135 $this->assertEquals(groups_get_grouping_by_idnumber($course->id, $idnumber1), $grouping);
137 // An empty idnumber should still return false
138 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, ''));
139 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, null));
142 * Test with another idnumber
144 // There is no matching idnumber at present
145 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, $idnumber2));
147 // We should now have a valid grouping returned by the idnumber search
148 $grouping = $generator->create_grouping(array('courseid' => $course->id, 'idnumber' => $idnumber2));
149 $this->assertEquals(groups_get_grouping_by_idnumber($course->id, $idnumber2), $grouping);
152 * Grouping idnumbers are unique within a course so test that we don't
153 * retrieve groupings for the first course
156 // Create a second course
157 $course = $generator->create_course(array('category' => $cat->id));
159 // An empty idnumber should always return a false value
160 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, ''));
161 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, null));
163 // Our existing idnumbers shouldn't be returned here as we're in a different course
164 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, $idnumber1));
165 $this->assertFalse(groups_get_grouping_by_idnumber($course->id, $idnumber2));
167 // We should be able to reuse the idnumbers again since this is a different course
168 $grouping = $generator->create_grouping(array('courseid' => $course->id, 'idnumber' => $idnumber1));
169 $this->assertEquals(groups_get_grouping_by_idnumber($course->id, $idnumber1), $grouping);
171 $grouping = $generator->create_grouping(array('courseid' => $course->id, 'idnumber' => $idnumber2));
172 $this->assertEquals(groups_get_grouping_by_idnumber($course->id, $idnumber2), $grouping);