PageRenderTime 50ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/grade/simpletest/testgradegrades.php

http://github.com/moodle/moodle
PHP | 207 lines | 104 code | 39 blank | 64 comment | 1 complexity | c436c8b0d5c728516353d2eeefce55ce MD5 | raw file
Possible License(s): MIT, AGPL-3.0, MPL-2.0-no-copyleft-exception, LGPL-3.0, GPL-3.0, Apache-2.0, LGPL-2.1, BSD-3-Clause
  1. <?php
  2. ///////////////////////////////////////////////////////////////////////////
  3. // //
  4. // NOTICE OF COPYRIGHT //
  5. // //
  6. // Moodle - Modular Object-Oriented Dynamic Learning Environment //
  7. // http://moodle.org //
  8. // //
  9. // Copyright (C) 1999 onwards Martin Dougiamas http://dougiamas.com //
  10. // //
  11. // This program is free software; you can redistribute it and/or modify //
  12. // it under the terms of the GNU General Public License as published by //
  13. // the Free Software Foundation; either version 2 of the License, or //
  14. // (at your option) any later version. //
  15. // //
  16. // This program is distributed in the hope that it will be useful, //
  17. // but WITHOUT ANY WARRANTY; without even the implied warranty of //
  18. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
  19. // GNU General Public License for more details: //
  20. // //
  21. // http://www.gnu.org/copyleft/gpl.html //
  22. // //
  23. ///////////////////////////////////////////////////////////////////////////
  24. /**
  25. * Unit tests for grade_raw object.
  26. *
  27. * @author nicolas@moodle.com
  28. * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
  29. * @package moodlecore
  30. */
  31. if (!defined('MOODLE_INTERNAL')) {
  32. die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
  33. }
  34. require_once($CFG->libdir.'/simpletest/fixtures/gradetest.php');
  35. class grade_grade_test extends grade_test {
  36. function test_grade_grade() {
  37. $this->sub_test_grade_grade_construct();
  38. $this->sub_test_grade_grade_insert();
  39. $this->sub_test_grade_grade_update();
  40. $this->sub_test_grade_grade_fetch();
  41. $this->sub_test_grade_grade_fetch_all();
  42. $this->sub_test_grade_grade_load_grade_item();
  43. $this->sub_test_grade_grade_standardise_score();
  44. $this->sub_test_grade_grade_is_locked();
  45. $this->sub_test_grade_grade_set_hidden();
  46. $this->sub_test_grade_grade_is_hidden();
  47. }
  48. function sub_test_grade_grade_construct() {
  49. $params = new stdClass();
  50. $params->itemid = $this->grade_items[0]->id;
  51. $params->userid = 1;
  52. $params->rawgrade = 88;
  53. $params->rawgrademax = 110;
  54. $params->rawgrademin = 18;
  55. $grade_grade = new grade_grade($params, false);
  56. $this->assertEqual($params->itemid, $grade_grade->itemid);
  57. $this->assertEqual($params->rawgrade, $grade_grade->rawgrade);
  58. }
  59. function sub_test_grade_grade_insert() {
  60. $grade_grade = new grade_grade();
  61. $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;
  67. // Check the grade_item's needsupdate variable first
  68. $grade_grade->load_grade_item();
  69. $this->assertFalse($grade_grade->grade_item->needsupdate);
  70. $grade_grade->insert();
  71. $last_grade_grade = end($this->grade_grades);
  72. $this->assertEqual($grade_grade->id, $last_grade_grade->id + 1);
  73. // timecreated will only be set if the grade was submitted by an activity module
  74. $this->assertTrue(empty($grade_grade->timecreated));
  75. // timemodified will only be set if the grade was submitted by an activity module
  76. $this->assertTrue(empty($grade_grade->timemodified));
  77. //keep our collection the same as is in the database
  78. $this->grade_grades[] = $grade_grade;
  79. }
  80. function sub_test_grade_grade_update() {
  81. $grade_grade = new grade_grade($this->grade_grades[0]);
  82. $this->assertTrue(method_exists($grade_grade, 'update'));
  83. }
  84. function sub_test_grade_grade_fetch() {
  85. $grade_grade = new grade_grade();
  86. $this->assertTrue(method_exists($grade_grade, 'fetch'));
  87. $grades = grade_grade::fetch(array('id'=>$this->grade_grades[0]->id));
  88. $this->assertEqual($this->grade_grades[0]->id, $grades->id);
  89. $this->assertEqual($this->grade_grades[0]->rawgrade, $grades->rawgrade);
  90. }
  91. function sub_test_grade_grade_fetch_all() {
  92. $grade_grade = new grade_grade();
  93. $this->assertTrue(method_exists($grade_grade, 'fetch_all'));
  94. $grades = grade_grade::fetch_all(array());
  95. $this->assertEqual(count($this->grade_grades), count($grades));
  96. }
  97. function sub_test_grade_grade_load_grade_item() {
  98. $grade_grade = new grade_grade($this->grade_grades[0]);
  99. $this->assertTrue(method_exists($grade_grade, 'load_grade_item'));
  100. $this->assertNull($grade_grade->grade_item);
  101. $this->assertTrue($grade_grade->itemid);
  102. $this->assertNotNull($grade_grade->load_grade_item());
  103. $this->assertNotNull($grade_grade->grade_item);
  104. $this->assertEqual($this->grade_items[0]->id, $grade_grade->grade_item->id);
  105. }
  106. function sub_test_grade_grade_standardise_score() {
  107. $this->assertEqual(4, round(grade_grade::standardise_score(6, 0, 7, 0, 5)));
  108. $this->assertEqual(40, grade_grade::standardise_score(50, 30, 80, 0, 100));
  109. }
  110. /*
  111. * Disabling this test: the set_locked() arguments have been modified, rendering these tests useless until they are re-written
  112. function test_grade_grade_set_locked() {
  113. $grade_item = new grade_item($this->grade_items[0]);
  114. $grade = new grade_grade($grade_item->get_final(1));
  115. $this->assertTrue(method_exists($grade, 'set_locked'));
  116. $this->assertTrue(empty($grade_item->locked));
  117. $this->assertTrue(empty($grade->locked));
  118. $this->assertTrue($grade->set_locked(true));
  119. $this->assertFalse(empty($grade->locked));
  120. $this->assertTrue($grade->set_locked(false));
  121. $this->assertTrue(empty($grade->locked));
  122. $this->assertTrue($grade_item->set_locked(true, true));
  123. $grade = new grade_grade($grade_item->get_final(1));
  124. $this->assertFalse(empty($grade->locked));
  125. $this->assertFalse($grade->set_locked(true, false));
  126. $this->assertTrue($grade_item->set_locked(true, false));
  127. $grade = new grade_grade($grade_item->get_final(1));
  128. $this->assertTrue($grade->set_locked(true, false));
  129. }
  130. */
  131. function sub_test_grade_grade_is_locked() {
  132. $grade = new grade_grade($this->grade_grades[0]);
  133. $this->assertTrue(method_exists($grade, 'is_locked'));
  134. $this->assertFalse($grade->is_locked());
  135. $grade->locked = time();
  136. $this->assertTrue($grade->is_locked());
  137. }
  138. function sub_test_grade_grade_set_hidden() {
  139. $grade_item = new grade_item($this->grade_items[0]);
  140. $grade = new grade_grade($grade_item->get_final(1));
  141. $this->assertTrue(method_exists($grade, 'set_hidden'));
  142. $this->assertEqual(0, $grade_item->hidden);
  143. $this->assertEqual(0, $grade->hidden);
  144. $grade->set_hidden(0);
  145. $this->assertEqual(0, $grade->hidden);
  146. $grade->set_hidden(1);
  147. $this->assertEqual(1, $grade->hidden);
  148. }
  149. function sub_test_grade_grade_is_hidden() {
  150. $grade = new grade_grade($this->grade_grades[0]);
  151. $this->assertTrue(method_exists($grade, 'is_hidden'));
  152. //$this->grade_grades[0] is hidden by sub_test_grade_grade_set_hidden()
  153. //$this->assertFalse($grade->is_hidden());
  154. //$grade->hidden = 1;
  155. $this->assertTrue($grade->is_hidden());
  156. $grade->hidden = time()-666;
  157. $this->assertFalse($grade->is_hidden());
  158. $grade->hidden = time()+666;
  159. $this->assertTrue($grade->is_hidden());
  160. }
  161. }