2 // This file is part of Moodle - http://moodle.org/
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.
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/>.
18 * @package core_grades
20 * @copyright nicolas@moodle.com
21 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 defined('MOODLE_INTERNAL') || die();
26 require_once(__DIR__.'/fixtures/lib.php');
29 class grade_grade_testcase extends grade_base_testcase {
31 public function test_grade_grade() {
32 $this->sub_test_grade_grade_construct();
33 $this->sub_test_grade_grade_insert();
34 $this->sub_test_grade_grade_update();
35 $this->sub_test_grade_grade_fetch();
36 $this->sub_test_grade_grade_fetch_all();
37 $this->sub_test_grade_grade_load_grade_item();
38 $this->sub_test_grade_grade_standardise_score();
39 $this->sub_test_grade_grade_is_locked();
40 $this->sub_test_grade_grade_set_hidden();
41 $this->sub_test_grade_grade_is_hidden();
44 protected function sub_test_grade_grade_construct() {
45 $params = new stdClass();
47 $params->itemid = $this->grade_items[0]->id;
49 $params->rawgrade = 88;
50 $params->rawgrademax = 110;
51 $params->rawgrademin = 18;
53 $grade_grade = new grade_grade($params, false);
54 $this->assertEquals($params->itemid, $grade_grade->itemid);
55 $this->assertEquals($params->rawgrade, $grade_grade->rawgrade);
58 protected function sub_test_grade_grade_insert() {
59 $grade_grade = new grade_grade();
60 $this->assertTrue(method_exists($grade_grade, 'insert'));
62 $grade_grade->itemid = $this->grade_items[0]->id;
63 $grade_grade->userid = 10;
64 $grade_grade->rawgrade = 88;
65 $grade_grade->rawgrademax = 110;
66 $grade_grade->rawgrademin = 18;
68 // Check the grade_item's needsupdate variable first
69 $grade_grade->load_grade_item();
70 $this->assertEmpty($grade_grade->grade_item->needsupdate);
72 $grade_grade->insert();
74 $last_grade_grade = end($this->grade_grades);
76 $this->assertEquals($grade_grade->id, $last_grade_grade->id + 1);
78 // timecreated will only be set if the grade was submitted by an activity module
79 $this->assertTrue(empty($grade_grade->timecreated));
80 // timemodified will only be set if the grade was submitted by an activity module
81 $this->assertTrue(empty($grade_grade->timemodified));
83 //keep our collection the same as is in the database
84 $this->grade_grades[] = $grade_grade;
87 protected function sub_test_grade_grade_update() {
88 $grade_grade = new grade_grade($this->grade_grades[0]);
89 $this->assertTrue(method_exists($grade_grade, 'update'));
92 protected function sub_test_grade_grade_fetch() {
93 $grade_grade = new grade_grade();
94 $this->assertTrue(method_exists($grade_grade, 'fetch'));
96 $grades = grade_grade::fetch(array('id'=>$this->grade_grades[0]->id));
97 $this->assertEquals($this->grade_grades[0]->id, $grades->id);
98 $this->assertEquals($this->grade_grades[0]->rawgrade, $grades->rawgrade);
101 protected function sub_test_grade_grade_fetch_all() {
102 $grade_grade = new grade_grade();
103 $this->assertTrue(method_exists($grade_grade, 'fetch_all'));
105 $grades = grade_grade::fetch_all(array());
106 $this->assertEquals(count($this->grade_grades), count($grades));
109 protected function sub_test_grade_grade_load_grade_item() {
110 $grade_grade = new grade_grade($this->grade_grades[0]);
111 $this->assertTrue(method_exists($grade_grade, 'load_grade_item'));
112 $this->assertNull($grade_grade->grade_item);
113 $this->assertNotEmpty($grade_grade->itemid);
114 $this->assertNotNull($grade_grade->load_grade_item());
115 $this->assertNotNull($grade_grade->grade_item);
116 $this->assertEquals($this->grade_items[0]->id, $grade_grade->grade_item->id);
120 protected function sub_test_grade_grade_standardise_score() {
121 $this->assertEquals(4, round(grade_grade::standardise_score(6, 0, 7, 0, 5)));
122 $this->assertEquals(40, grade_grade::standardise_score(50, 30, 80, 0, 100));
127 * Disabling this test: the set_locked() arguments have been modified, rendering these tests useless until they are re-written
129 protected function test_grade_grade_set_locked() {
130 $grade_item = new grade_item($this->grade_items[0]);
131 $grade = new grade_grade($grade_item->get_final(1));
132 $this->assertTrue(method_exists($grade, 'set_locked'));
134 $this->assertTrue(empty($grade_item->locked));
135 $this->assertTrue(empty($grade->locked));
137 $this->assertTrue($grade->set_locked(true));
138 $this->assertFalse(empty($grade->locked));
139 $this->assertTrue($grade->set_locked(false));
140 $this->assertTrue(empty($grade->locked));
142 $this->assertTrue($grade_item->set_locked(true, true));
143 $grade = new grade_grade($grade_item->get_final(1));
145 $this->assertFalse(empty($grade->locked));
146 $this->assertFalse($grade->set_locked(true, false));
148 $this->assertTrue($grade_item->set_locked(true, false));
149 $grade = new grade_grade($grade_item->get_final(1));
151 $this->assertTrue($grade->set_locked(true, false));
155 protected function sub_test_grade_grade_is_locked() {
156 $grade = new grade_grade($this->grade_grades[0]);
157 $this->assertTrue(method_exists($grade, 'is_locked'));
159 $this->assertFalse($grade->is_locked());
160 $grade->locked = time();
161 $this->assertTrue($grade->is_locked());
164 protected function sub_test_grade_grade_set_hidden() {
165 $grade = new grade_grade($this->grade_grades[0]);
166 $grade_item = new grade_item($this->grade_items[0]);
167 $this->assertTrue(method_exists($grade, 'set_hidden'));
169 $this->assertEquals(0, $grade_item->hidden);
170 $this->assertEquals(0, $grade->hidden);
172 $grade->set_hidden(0);
173 $this->assertEquals(0, $grade->hidden);
175 $grade->set_hidden(1);
176 $this->assertEquals(1, $grade->hidden);
178 $grade->set_hidden(0);
179 $this->assertEquals(0, $grade->hidden);
182 protected function sub_test_grade_grade_is_hidden() {
183 $grade = new grade_grade($this->grade_grades[0]);
184 $this->assertTrue(method_exists($grade, 'is_hidden'));
186 $this->assertFalse($grade->is_hidden());
188 $this->assertTrue($grade->is_hidden());
190 $grade->hidden = time()-666;
191 $this->assertFalse($grade->is_hidden());
193 $grade->hidden = time()+666;
194 $this->assertTrue($grade->is_hidden());