PageRenderTime 42ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 1ms

/lib/grade/tests/grade_grade_test.php

https://bitbucket.org/synergylearning/campusconnect
PHP | 196 lines | 106 code | 38 blank | 52 comment | 1 complexity | 0d8d30a92e6784783a1e40a8eec17f07 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, LGPL-3.0, GPL-3.0, LGPL-2.1, Apache-2.0, BSD-3-Clause, AGPL-3.0
  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/>.
  16. /**
  17. * @package core_grades
  18. * @category phpunit
  19. * @copyright nicolas@moodle.com
  20. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  21. */
  22. defined('MOODLE_INTERNAL') || die();
  23. require_once(__DIR__.'/fixtures/lib.php');
  24. class core_grade_grade_testcase extends grade_base_testcase {
  25. public function test_grade_grade() {
  26. $this->sub_test_grade_grade_construct();
  27. $this->sub_test_grade_grade_insert();
  28. $this->sub_test_grade_grade_update();
  29. $this->sub_test_grade_grade_fetch();
  30. $this->sub_test_grade_grade_fetch_all();
  31. $this->sub_test_grade_grade_load_grade_item();
  32. $this->sub_test_grade_grade_standardise_score();
  33. $this->sub_test_grade_grade_is_locked();
  34. $this->sub_test_grade_grade_set_hidden();
  35. $this->sub_test_grade_grade_is_hidden();
  36. }
  37. protected function sub_test_grade_grade_construct() {
  38. $params = new stdClass();
  39. $params->itemid = $this->grade_items[0]->id;
  40. $params->userid = 1;
  41. $params->rawgrade = 88;
  42. $params->rawgrademax = 110;
  43. $params->rawgrademin = 18;
  44. $grade_grade = new grade_grade($params, false);
  45. $this->assertEquals($params->itemid, $grade_grade->itemid);
  46. $this->assertEquals($params->rawgrade, $grade_grade->rawgrade);
  47. }
  48. protected function sub_test_grade_grade_insert() {
  49. $grade_grade = new grade_grade();
  50. $this->assertTrue(method_exists($grade_grade, 'insert'));
  51. $grade_grade->itemid = $this->grade_items[0]->id;
  52. $grade_grade->userid = 10;
  53. $grade_grade->rawgrade = 88;
  54. $grade_grade->rawgrademax = 110;
  55. $grade_grade->rawgrademin = 18;
  56. // Check the grade_item's needsupdate variable first.
  57. $grade_grade->load_grade_item();
  58. $this->assertEmpty($grade_grade->grade_item->needsupdate);
  59. $grade_grade->insert();
  60. $last_grade_grade = end($this->grade_grades);
  61. $this->assertEquals($grade_grade->id, $last_grade_grade->id + 1);
  62. // Timecreated will only be set if the grade was submitted by an activity module.
  63. $this->assertTrue(empty($grade_grade->timecreated));
  64. // Timemodified will only be set if the grade was submitted by an activity module.
  65. $this->assertTrue(empty($grade_grade->timemodified));
  66. // Keep our collection the same as is in the database.
  67. $this->grade_grades[] = $grade_grade;
  68. }
  69. protected function sub_test_grade_grade_update() {
  70. $grade_grade = new grade_grade($this->grade_grades[0], false);
  71. $this->assertTrue(method_exists($grade_grade, 'update'));
  72. }
  73. protected function sub_test_grade_grade_fetch() {
  74. $grade_grade = new grade_grade();
  75. $this->assertTrue(method_exists($grade_grade, 'fetch'));
  76. $grades = grade_grade::fetch(array('id'=>$this->grade_grades[0]->id));
  77. $this->assertEquals($this->grade_grades[0]->id, $grades->id);
  78. $this->assertEquals($this->grade_grades[0]->rawgrade, $grades->rawgrade);
  79. }
  80. protected function sub_test_grade_grade_fetch_all() {
  81. $grade_grade = new grade_grade();
  82. $this->assertTrue(method_exists($grade_grade, 'fetch_all'));
  83. $grades = grade_grade::fetch_all(array());
  84. $this->assertEquals(count($this->grade_grades), count($grades));
  85. }
  86. protected function sub_test_grade_grade_load_grade_item() {
  87. $grade_grade = new grade_grade($this->grade_grades[0], false);
  88. $this->assertTrue(method_exists($grade_grade, 'load_grade_item'));
  89. $this->assertNull($grade_grade->grade_item);
  90. $this->assertNotEmpty($grade_grade->itemid);
  91. $this->assertNotNull($grade_grade->load_grade_item());
  92. $this->assertNotNull($grade_grade->grade_item);
  93. $this->assertEquals($this->grade_items[0]->id, $grade_grade->grade_item->id);
  94. }
  95. protected function sub_test_grade_grade_standardise_score() {
  96. $this->assertEquals(4, round(grade_grade::standardise_score(6, 0, 7, 0, 5)));
  97. $this->assertEquals(40, grade_grade::standardise_score(50, 30, 80, 0, 100));
  98. }
  99. /*
  100. * Disabling this test: the set_locked() arguments have been modified, rendering these tests useless until they are re-written
  101. protected function test_grade_grade_set_locked() {
  102. $grade_item = new grade_item($this->grade_items[0]);
  103. $grade = new grade_grade($grade_item->get_final(1));
  104. $this->assertTrue(method_exists($grade, 'set_locked'));
  105. $this->assertTrue(empty($grade_item->locked));
  106. $this->assertTrue(empty($grade->locked));
  107. $this->assertTrue($grade->set_locked(true));
  108. $this->assertFalse(empty($grade->locked));
  109. $this->assertTrue($grade->set_locked(false));
  110. $this->assertTrue(empty($grade->locked));
  111. $this->assertTrue($grade_item->set_locked(true, true));
  112. $grade = new grade_grade($grade_item->get_final(1));
  113. $this->assertFalse(empty($grade->locked));
  114. $this->assertFalse($grade->set_locked(true, false));
  115. $this->assertTrue($grade_item->set_locked(true, false));
  116. $grade = new grade_grade($grade_item->get_final(1));
  117. $this->assertTrue($grade->set_locked(true, false));
  118. }
  119. */
  120. protected function sub_test_grade_grade_is_locked() {
  121. $grade = new grade_grade($this->grade_grades[0], false);
  122. $this->assertTrue(method_exists($grade, 'is_locked'));
  123. $this->assertFalse($grade->is_locked());
  124. $grade->locked = time();
  125. $this->assertTrue($grade->is_locked());
  126. }
  127. protected function sub_test_grade_grade_set_hidden() {
  128. $grade = new grade_grade($this->grade_grades[0], false);
  129. $grade_item = new grade_item($this->grade_items[0], false);
  130. $this->assertTrue(method_exists($grade, 'set_hidden'));
  131. $this->assertEquals(0, $grade_item->hidden);
  132. $this->assertEquals(0, $grade->hidden);
  133. $grade->set_hidden(0);
  134. $this->assertEquals(0, $grade->hidden);
  135. $grade->set_hidden(1);
  136. $this->assertEquals(1, $grade->hidden);
  137. $grade->set_hidden(0);
  138. $this->assertEquals(0, $grade->hidden);
  139. }
  140. protected function sub_test_grade_grade_is_hidden() {
  141. $grade = new grade_grade($this->grade_grades[0], false);
  142. $this->assertTrue(method_exists($grade, 'is_hidden'));
  143. $this->assertFalse($grade->is_hidden());
  144. $grade->hidden = 1;
  145. $this->assertTrue($grade->is_hidden());
  146. $grade->hidden = time()-666;
  147. $this->assertFalse($grade->is_hidden());
  148. $grade->hidden = time()+666;
  149. $this->assertTrue($grade->is_hidden());
  150. }
  151. }