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

/lib/simpletest/fixtures/gradetest.php

http://github.com/moodle/moodle
PHP | 878 lines | 640 code | 143 blank | 95 comment | 2 complexity | dece4d84f90675cb8a31f2af9248ad4e 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. // 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 moodlecore
  18. * @copyright nicolas@moodle.com
  19. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  20. */
  21. if (!defined('MOODLE_INTERNAL')) {
  22. die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
  23. }
  24. require_once($CFG->libdir . '/adminlib.php');
  25. require_once($CFG->libdir . '/gradelib.php');
  26. /**
  27. * Shared code for all grade related tests.
  28. *
  29. * Here is a brief explanation of the test data set up in these unit tests.
  30. * category1 => array(category2 => array(grade_item1, grade_item2), category3 => array(grade_item3))
  31. * 3 users for 3 grade_items
  32. */
  33. class grade_test extends UnitTestCaseUsingDatabase {
  34. public $grade_tables = array('lib' => array(
  35. 'grade_categories', 'grade_categories_history',
  36. 'scale', 'scale_history',
  37. 'grade_items', 'grade_items_history',
  38. 'grade_grades', 'grade_grades_history',
  39. 'grade_outcomes', 'grade_outcomes_history','grade_outcomes_courses',
  40. 'files',
  41. 'modules',
  42. 'course_modules'),
  43. 'mod/quiz' => array('quiz')
  44. );
  45. public $grade_items = array();
  46. public $grade_categories = array();
  47. public $grade_grades = array();
  48. public $grade_outcomes = array();
  49. public $scale = array();
  50. public $activities = array();
  51. public $courseid = 1;
  52. public $userid = 1;
  53. /**
  54. * Create temporary test tables and entries in the database for these tests.
  55. * These tests have to work on a brand new site.
  56. */
  57. function setUp() {
  58. global $CFG;
  59. parent::setup();
  60. $CFG->grade_droplow = -1;
  61. $CFG->grade_keephigh = -1;
  62. $CFG->grade_aggregation = -1;
  63. $CFG->grade_aggregateonlygraded = -1;
  64. $CFG->grade_aggregateoutcomes = -1;
  65. $CFG->grade_aggregatesubcats = -1;
  66. $this->switch_to_test_db(); // All operations until end of test method will happen in test DB
  67. foreach ($this->grade_tables as $dir => $tables) {
  68. $this->create_test_tables($tables, $dir); // Create tables
  69. foreach ($tables as $table) { // Fill them if load_xxx method is available
  70. $function = "load_$table";
  71. if (method_exists($this, $function)) {
  72. $this->$function();
  73. }
  74. }
  75. }
  76. }
  77. function tearDown() {
  78. parent::tearDown(); // All the test tables created in setUp will be dropped by this
  79. }
  80. /**
  81. * Load scale data into the database, and adds the corresponding objects to this class' variable.
  82. */
  83. function load_scale() {
  84. global $DB;
  85. $scale = new stdClass();
  86. $scale->name = 'unittestscale1';
  87. $scale->courseid = $this->courseid;
  88. $scale->userid = $this->userid;
  89. $scale->scale = 'Way off topic, Not very helpful, Fairly neutral, Fairly helpful, Supportive, Some good information, Perfect answer!';
  90. $scale->description = 'This scale defines some of qualities that make posts helpful within the Moodle help forums.\n Your feedback will help others see how their posts are being received.';
  91. $scale->timemodified = mktime();
  92. $scale->id = $DB->insert_record('scale', $scale);
  93. $this->scale[0] = $scale;
  94. $temp = explode(',', $scale->scale);
  95. $this->scalemax[0] = count($temp) -1;
  96. $scale = new stdClass();
  97. $scale->name = 'unittestscale2';
  98. $scale->courseid = $this->courseid;
  99. $scale->userid = $this->userid;
  100. $scale->scale = 'Distinction, Very Good, Good, Pass, Fail';
  101. $scale->description = 'This scale is used to mark standard assignments.';
  102. $scale->timemodified = mktime();
  103. $scale->id = $DB->insert_record('scale', $scale);
  104. $this->scale[1] = $scale;
  105. $temp = explode(',', $scale->scale);
  106. $this->scalemax[1] = count($temp) -1;
  107. $scale = new stdClass();
  108. $scale->name = 'unittestscale3';
  109. $scale->courseid = $this->courseid;
  110. $scale->userid = $this->userid;
  111. $scale->scale = 'Loner, Contentious, Disinterested, Participative, Follower, Leader';
  112. $scale->description = 'Describes the level of teamwork of a student.';
  113. $scale->timemodified = mktime();
  114. $temp = explode(',', $scale->scale);
  115. $scale->max = count($temp) -1;
  116. $scale->id = $DB->insert_record('scale', $scale);
  117. $this->scale[2] = $scale;
  118. $temp = explode(',', $scale->scale);
  119. $this->scalemax[2] = count($temp) -1;
  120. $scale->name = 'unittestscale4';
  121. $scale->courseid = $this->courseid;
  122. $scale->userid = $this->userid;
  123. $scale->scale = 'Does not understand theory, Understands theory but fails practice, Manages through, Excels';
  124. $scale->description = 'Level of expertise at a technical task, with a theoretical framework.';
  125. $scale->timemodified = mktime();
  126. $temp = explode(',', $scale->scale);
  127. $scale->max = count($temp) -1;
  128. $scale->id = $DB->insert_record('scale', $scale);
  129. $this->scale[3] = $scale;
  130. $temp = explode(',', $scale->scale);
  131. $this->scalemax[3] = count($temp) -1;
  132. $scale->name = 'unittestscale5';
  133. $scale->courseid = $this->courseid;
  134. $scale->userid = $this->userid;
  135. $scale->scale = 'Insufficient, Acceptable, Excellent.';
  136. $scale->description = 'Description of skills.';
  137. $scale->timemodified = mktime();
  138. $temp = explode(',', $scale->scale);
  139. $scale->max = count($temp) -1;
  140. $scale->id = $DB->insert_record('scale', $scale);
  141. $this->scale[4] = $scale;
  142. $temp = explode(',', $scale->scale);
  143. $this->scalemax[4] = count($temp) -1;
  144. }
  145. /**
  146. * Load grade_category data into the database, and adds the corresponding objects to this class' variable.
  147. * category structure:
  148. course category
  149. |
  150. +--------+-------------+
  151. | |
  152. unittestcategory1 level1category
  153. |
  154. +--------+-------------+
  155. | |
  156. unittestcategory2 unittestcategory3
  157. */
  158. function load_grade_categories() {
  159. global $DB;
  160. $course_category = grade_category::fetch_course_category($this->courseid);
  161. $grade_category = new stdClass();
  162. $grade_category->fullname = 'unittestcategory1';
  163. $grade_category->courseid = $this->courseid;
  164. $grade_category->aggregation = GRADE_AGGREGATE_MEAN;
  165. $grade_category->aggregateonlygraded = 1;
  166. $grade_category->keephigh = 0;
  167. $grade_category->droplow = 0;
  168. $grade_category->parent = $course_category->id;
  169. $grade_category->timecreated = mktime();
  170. $grade_category->timemodified = mktime();
  171. $grade_category->depth = 2;
  172. $grade_category->id = $DB->insert_record('grade_categories', $grade_category);
  173. $grade_category->path = '/'.$course_category->id.'/'.$grade_category->id.'/';
  174. $DB->update_record('grade_categories', $grade_category);
  175. $this->grade_categories[0] = $grade_category;
  176. $grade_category = new stdClass();
  177. $grade_category->fullname = 'unittestcategory2';
  178. $grade_category->courseid = $this->courseid;
  179. $grade_category->aggregation = GRADE_AGGREGATE_MEAN;
  180. $grade_category->aggregateonlygraded = 1;
  181. $grade_category->keephigh = 0;
  182. $grade_category->droplow = 0;
  183. $grade_category->parent = $this->grade_categories[0]->id;
  184. $grade_category->timecreated = mktime();
  185. $grade_category->timemodified = mktime();
  186. $grade_category->depth = 3;
  187. $grade_category->id = $DB->insert_record('grade_categories', $grade_category);
  188. $grade_category->path = $this->grade_categories[0]->path.$grade_category->id.'/';
  189. $DB->update_record('grade_categories', $grade_category);
  190. $this->grade_categories[1] = $grade_category;
  191. $grade_category = new stdClass();
  192. $grade_category->fullname = 'unittestcategory3';
  193. $grade_category->courseid = $this->courseid;
  194. $grade_category->aggregation = GRADE_AGGREGATE_MEAN;
  195. $grade_category->aggregateonlygraded = 1;
  196. $grade_category->keephigh = 0;
  197. $grade_category->droplow = 0;
  198. $grade_category->parent = $this->grade_categories[0]->id;
  199. $grade_category->timecreated = mktime();
  200. $grade_category->timemodified = mktime();
  201. $grade_category->depth = 3;
  202. $grade_category->id = $DB->insert_record('grade_categories', $grade_category);
  203. $grade_category->path = $this->grade_categories[0]->path.$grade_category->id.'/';
  204. $DB->update_record('grade_categories', $grade_category);
  205. $this->grade_categories[2] = $grade_category;
  206. // A category with no parent, but grade_items as children
  207. $grade_category = new stdClass();
  208. $grade_category->fullname = 'level1category';
  209. $grade_category->courseid = $this->courseid;
  210. $grade_category->aggregation = GRADE_AGGREGATE_MEAN;
  211. $grade_category->aggregateonlygraded = 1;
  212. $grade_category->keephigh = 0;
  213. $grade_category->droplow = 0;
  214. $grade_category->parent = $course_category->id;
  215. $grade_category->timecreated = mktime();
  216. $grade_category->timemodified = mktime();
  217. $grade_category->depth = 2;
  218. $grade_category->id = $DB->insert_record('grade_categories', $grade_category);
  219. $grade_category->path = '/'.$course_category->id.'/'.$grade_category->id.'/';
  220. $DB->update_record('grade_categories', $grade_category);
  221. $this->grade_categories[3] = $grade_category;
  222. }
  223. /**
  224. * Load module entries in modules table
  225. */
  226. function load_modules() {
  227. global $DB;
  228. $module = new stdClass();
  229. $module->name = 'assignment';
  230. $module->id = $DB->insert_record('modules', $module);
  231. $this->modules[0] = $module;
  232. $module = new stdClass();
  233. $module->name = 'quiz';
  234. $module->id = $DB->insert_record('modules', $module);
  235. $this->modules[1] = $module;
  236. $module = new stdClass();
  237. $module->name = 'forum';
  238. $module->id = $DB->insert_record('modules', $module);
  239. $this->modules[2] = $module;
  240. }
  241. /**
  242. * Load module instance entries in course_modules table
  243. */
  244. function load_course_modules() {
  245. global $DB;
  246. $course_module = new stdClass();
  247. $course_module->course = $this->courseid;
  248. $quiz = new stdClass();
  249. $quiz->module = 1;
  250. $quiz->instance = 2;
  251. $course_module->id = $DB->insert_record('course_modules', $course_module);
  252. $this->course_module[0] = $course_module;
  253. $course_module = new stdClass();
  254. $course_module->course = $this->courseid;
  255. $quiz->module = 2;
  256. $quiz->instance = 1;
  257. $course_module->id = $DB->insert_record('course_modules', $course_module);
  258. $this->course_module[0] = $course_module;
  259. $course_module = new stdClass();
  260. $course_module->course = $this->courseid;
  261. $quiz->module = 2;
  262. $quiz->instance = 5;
  263. $course_module->id = $DB->insert_record('course_modules', $course_module);
  264. $this->course_module[0] = $course_module;
  265. $course_module = new stdClass();
  266. $course_module->course = $this->courseid;
  267. $quiz->module = 3;
  268. $quiz->instance = 3;
  269. $course_module->id = $DB->insert_record('course_modules', $course_module);
  270. $this->course_module[0] = $course_module;
  271. $course_module = new stdClass();
  272. $course_module->course = $this->courseid;
  273. $quiz->module = 3;
  274. $quiz->instance = 7;
  275. $course_module->id = $DB->insert_record('course_modules', $course_module);
  276. $this->course_module[0] = $course_module;
  277. $course_module = new stdClass();
  278. $course_module->course = $this->courseid;
  279. $quiz->module = 3;
  280. $quiz->instance = 9;
  281. $course_module->id = $DB->insert_record('course_modules', $course_module);
  282. $this->course_module[0] = $course_module;
  283. }
  284. /**
  285. * Load test quiz data into the database
  286. */
  287. function load_quiz_activities() {
  288. global $DB;
  289. $quiz = new stdClass();
  290. $quiz->course = $this->courseid;
  291. $quiz->name = 'test quiz';
  292. $quiz->intro = 'let us quiz you!';
  293. $quiz->questions = '1,2';
  294. $quiz->id = $DB->insert_record('quiz', $quiz);
  295. $this->activities[0] = $quiz;
  296. $quiz = new stdClass();
  297. $quiz->course = $this->courseid;
  298. $quiz->name = 'test quiz 2';
  299. $quiz->intro = 'let us quiz you again!';
  300. $quiz->questions = '1,3';
  301. $quiz->id = $DB->insert_record('quiz', $quiz);
  302. $this->activities[1] = $quiz;
  303. }
  304. /**
  305. * Load grade_item data into the database, and adds the corresponding objects to this class' variable.
  306. */
  307. function load_grade_items() {
  308. global $DB;
  309. $course_category = grade_category::fetch_course_category($this->courseid);
  310. // id = 0
  311. $grade_item = new stdClass();
  312. $grade_item->courseid = $this->courseid;
  313. $grade_item->categoryid = $this->grade_categories[1]->id;
  314. $grade_item->itemname = 'unittestgradeitem1';
  315. $grade_item->itemtype = 'mod';
  316. $grade_item->itemmodule = 'quiz';
  317. $grade_item->iteminstance = 1;
  318. $grade_item->gradetype = GRADE_TYPE_VALUE;
  319. $grade_item->grademin = 30;
  320. $grade_item->grademax = 110;
  321. $grade_item->itemnumber = 1;
  322. $grade_item->idnumber = 'item id 0';
  323. $grade_item->iteminfo = 'Grade item 0 used for unit testing';
  324. $grade_item->timecreated = mktime();
  325. $grade_item->timemodified = mktime();
  326. $grade_item->sortorder = 3;
  327. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  328. $this->grade_items[0] = $grade_item;
  329. // id = 1
  330. $grade_item = new stdClass();
  331. $grade_item->courseid = $this->courseid;
  332. $grade_item->categoryid = $this->grade_categories[1]->id;
  333. $grade_item->itemname = 'unittestgradeitem2';
  334. $grade_item->itemtype = 'import';
  335. $grade_item->itemmodule = 'assignment';
  336. $grade_item->calculation = '= ##gi'.$this->grade_items[0]->id.'## + 30 + [[item id 0]] - [[item id 0]]';
  337. $grade_item->gradetype = GRADE_TYPE_VALUE;
  338. $grade_item->iteminstance = 2;
  339. $grade_item->itemnumber = null;
  340. $grade_item->grademin = 0;
  341. $grade_item->grademax = 100;
  342. $grade_item->iteminfo = 'Grade item 1 used for unit testing';
  343. $grade_item->timecreated = mktime();
  344. $grade_item->timemodified = mktime();
  345. $grade_item->sortorder = 4;
  346. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  347. $this->grade_items[1] = $grade_item;
  348. // id = 2
  349. $grade_item = new stdClass();
  350. $grade_item->courseid = $this->courseid;
  351. $grade_item->categoryid = $this->grade_categories[2]->id;
  352. $grade_item->itemname = 'unittestgradeitem3';
  353. $grade_item->itemtype = 'mod';
  354. $grade_item->itemmodule = 'forum';
  355. $grade_item->iteminstance = 3;
  356. $grade_item->gradetype = GRADE_TYPE_SCALE;
  357. $grade_item->scaleid = $this->scale[0]->id;
  358. $grade_item->grademin = 0;
  359. $grade_item->grademax = $this->scalemax[0];
  360. $grade_item->iteminfo = 'Grade item 2 used for unit testing';
  361. $grade_item->timecreated = mktime();
  362. $grade_item->timemodified = mktime();
  363. $grade_item->sortorder = 6;
  364. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  365. $this->grade_items[2] = $grade_item;
  366. // Load grade_items associated with the 3 categories
  367. // id = 3
  368. $grade_item = new stdClass();
  369. $grade_item->courseid = $this->courseid;
  370. $grade_item->iteminstance = $this->grade_categories[0]->id;
  371. $grade_item->itemname = 'unittestgradeitemcategory1';
  372. $grade_item->needsupdate = 0;
  373. $grade_item->itemtype = 'category';
  374. $grade_item->gradetype = GRADE_TYPE_VALUE;
  375. $grade_item->grademin = 0;
  376. $grade_item->grademax = 100;
  377. $grade_item->iteminfo = 'Grade item 3 used for unit testing';
  378. $grade_item->timecreated = mktime();
  379. $grade_item->timemodified = mktime();
  380. $grade_item->sortorder = 1;
  381. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  382. $this->grade_items[3] = $grade_item;
  383. // id = 4
  384. $grade_item = new stdClass();
  385. $grade_item->courseid = $this->courseid;
  386. $grade_item->iteminstance = $this->grade_categories[1]->id;
  387. $grade_item->itemname = 'unittestgradeitemcategory2';
  388. $grade_item->itemtype = 'category';
  389. $grade_item->gradetype = GRADE_TYPE_VALUE;
  390. $grade_item->needsupdate = 0;
  391. $grade_item->grademin = 0;
  392. $grade_item->grademax = 100;
  393. $grade_item->iteminfo = 'Grade item 4 used for unit testing';
  394. $grade_item->timecreated = mktime();
  395. $grade_item->timemodified = mktime();
  396. $grade_item->sortorder = 2;
  397. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  398. $this->grade_items[4] = $grade_item;
  399. // id = 5
  400. $grade_item = new stdClass();
  401. $grade_item->courseid = $this->courseid;
  402. $grade_item->iteminstance = $this->grade_categories[2]->id;
  403. $grade_item->itemname = 'unittestgradeitemcategory3';
  404. $grade_item->itemtype = 'category';
  405. $grade_item->gradetype = GRADE_TYPE_VALUE;
  406. $grade_item->needsupdate = true;
  407. $grade_item->grademin = 0;
  408. $grade_item->grademax = 100;
  409. $grade_item->iteminfo = 'Grade item 5 used for unit testing';
  410. $grade_item->timecreated = mktime();
  411. $grade_item->timemodified = mktime();
  412. $grade_item->sortorder = 5;
  413. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  414. $this->grade_items[5] = $grade_item;
  415. // Orphan grade_item
  416. // id = 6
  417. $grade_item = new stdClass();
  418. $grade_item->courseid = $this->courseid;
  419. $grade_item->categoryid = $course_category->id;
  420. $grade_item->itemname = 'unittestorphangradeitem1';
  421. $grade_item->itemtype = 'mod';
  422. $grade_item->itemmodule = 'quiz';
  423. $grade_item->iteminstance = 5;
  424. $grade_item->itemnumber = 0;
  425. $grade_item->gradetype = GRADE_TYPE_VALUE;
  426. $grade_item->grademin = 10;
  427. $grade_item->grademax = 120;
  428. $grade_item->locked = time();
  429. $grade_item->iteminfo = 'Orphan Grade 6 item used for unit testing';
  430. $grade_item->timecreated = mktime();
  431. $grade_item->timemodified = mktime();
  432. $grade_item->sortorder = 7;
  433. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  434. $this->grade_items[6] = $grade_item;
  435. // 2 grade items under level1category
  436. // id = 7
  437. $grade_item = new stdClass();
  438. $grade_item->courseid = $this->courseid;
  439. $grade_item->categoryid = $this->grade_categories[3]->id;
  440. $grade_item->itemname = 'singleparentitem1';
  441. $grade_item->itemtype = 'mod';
  442. $grade_item->itemmodule = 'forum';
  443. $grade_item->iteminstance = 7;
  444. $grade_item->gradetype = GRADE_TYPE_SCALE;
  445. $grade_item->scaleid = $this->scale[0]->id;
  446. $grade_item->grademin = 0;
  447. $grade_item->grademax = $this->scalemax[0];
  448. $grade_item->iteminfo = 'Grade item 7 used for unit testing';
  449. $grade_item->timecreated = mktime();
  450. $grade_item->timemodified = mktime();
  451. $grade_item->sortorder = 9;
  452. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  453. $this->grade_items[7] = $grade_item;
  454. // id = 8
  455. $grade_item = new stdClass();
  456. $grade_item->courseid = $this->courseid;
  457. $grade_item->categoryid = $this->grade_categories[3]->id;
  458. $grade_item->itemname = 'singleparentitem2';
  459. $grade_item->itemtype = 'mod';
  460. $grade_item->itemmodule = 'forum';
  461. $grade_item->iteminstance = 9;
  462. $grade_item->gradetype = GRADE_TYPE_VALUE;
  463. $grade_item->grademin = 0;
  464. $grade_item->grademax = 100;
  465. $grade_item->iteminfo = 'Grade item 8 used for unit testing';
  466. $grade_item->timecreated = mktime();
  467. $grade_item->timemodified = mktime();
  468. $grade_item->sortorder = 10;
  469. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  470. $this->grade_items[8] = $grade_item;
  471. // Grade_item for level1category
  472. // id = 9
  473. $grade_item = new stdClass();
  474. $grade_item->courseid = $this->courseid;
  475. $grade_item->itemname = 'grade_item for level1 category';
  476. $grade_item->itemtype = 'category';
  477. $grade_item->itemmodule = 'quiz';
  478. $grade_item->iteminstance = $this->grade_categories[3]->id;
  479. $grade_item->needsupdate = true;
  480. $grade_item->gradetype = GRADE_TYPE_VALUE;
  481. $grade_item->grademin = 0;
  482. $grade_item->grademax = 100;
  483. $grade_item->iteminfo = 'Orphan Grade item 9 used for unit testing';
  484. $grade_item->timecreated = mktime();
  485. $grade_item->timemodified = mktime();
  486. $grade_item->sortorder = 8;
  487. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  488. $this->grade_items[9] = $grade_item;
  489. // Manual grade_item
  490. // id = 10
  491. $grade_item = new stdClass();
  492. $grade_item->courseid = $this->courseid;
  493. $grade_item->categoryid = $course_category->id;
  494. $grade_item->itemname = 'manual grade_item';
  495. $grade_item->itemtype = 'manual';
  496. $grade_item->itemnumber = 0;
  497. $grade_item->needsupdate = false;
  498. $grade_item->gradetype = GRADE_TYPE_VALUE;
  499. $grade_item->grademin = 0;
  500. $grade_item->grademax = 100;
  501. $grade_item->iteminfo = 'Manual grade item 10 used for unit testing';
  502. $grade_item->timecreated = mktime();
  503. $grade_item->timemodified = mktime();
  504. $grade_item->id = $DB->insert_record('grade_items', $grade_item);
  505. $this->grade_items[10] = $grade_item;
  506. }
  507. /**
  508. * Load grade_grades data into the database, and adds the corresponding objects to this class' variable.
  509. */
  510. function load_grade_grades() {
  511. global $DB;
  512. //this method is called once for each test method. Avoid adding things to $this->grade_grades multiple times
  513. $this->grade_grades = array();
  514. // Grades for grade_item 1
  515. $grade = new stdClass();
  516. $grade->itemid = $this->grade_items[0]->id;
  517. $grade->userid = 1;
  518. $grade->rawgrade = 15; // too small
  519. $grade->finalgrade = 30;
  520. $grade->timecreated = mktime();
  521. $grade->timemodified = mktime();
  522. $grade->information = '1 of 17 grade_grades';
  523. $grade->informationformat = FORMAT_PLAIN;
  524. $grade->feedback = 'Good, but not good enough..';
  525. $grade->feedbackformat = FORMAT_PLAIN;
  526. $grade->id = $DB->insert_record('grade_grades', $grade);
  527. $this->grade_grades[0] = $grade;
  528. $grade = new stdClass();
  529. $grade->itemid = $this->grade_items[0]->id;
  530. $grade->userid = 2;
  531. $grade->rawgrade = 40;
  532. $grade->finalgrade = 40;
  533. $grade->timecreated = mktime();
  534. $grade->timemodified = mktime();
  535. $grade->information = '2 of 17 grade_grades';
  536. $grade->id = $DB->insert_record('grade_grades', $grade);
  537. $this->grade_grades[1] = $grade;
  538. $grade = new stdClass();
  539. $grade->itemid = $this->grade_items[0]->id;
  540. $grade->userid = 3;
  541. $grade->rawgrade = 170; // too big
  542. $grade->finalgrade = 110;
  543. $grade->timecreated = mktime();
  544. $grade->timemodified = mktime();
  545. $grade->information = '3 of 17 grade_grades';
  546. $grade->id = $DB->insert_record('grade_grades', $grade);
  547. $this->grade_grades[2] = $grade;
  548. // No raw grades for grade_item 2 - it is calculated
  549. $grade = new stdClass();
  550. $grade->itemid = $this->grade_items[1]->id;
  551. $grade->userid = 1;
  552. $grade->finalgrade = 72;
  553. $grade->timecreated = mktime();
  554. $grade->timemodified = mktime();
  555. $grade->information = '4 of 17 grade_grades';
  556. $grade->id = $DB->insert_record('grade_grades', $grade);
  557. $this->grade_grades[3] = $grade;
  558. $grade = new stdClass();
  559. $grade->itemid = $this->grade_items[1]->id;
  560. $grade->userid = 2;
  561. $grade->finalgrade = 92;
  562. $grade->timecreated = mktime();
  563. $grade->timemodified = mktime();
  564. $grade->information = '5 of 17 grade_grades';
  565. $grade->id = $DB->insert_record('grade_grades', $grade);
  566. $this->grade_grades[4] = $grade;
  567. $grade = new stdClass();
  568. $grade->itemid = $this->grade_items[1]->id;
  569. $grade->userid = 3;
  570. $grade->finalgrade = 100;
  571. $grade->timecreated = mktime();
  572. $grade->timemodified = mktime();
  573. $grade->information = '6 of 17 grade_grades';
  574. $grade->id = $DB->insert_record('grade_grades', $grade);
  575. $this->grade_grades[5] = $grade;
  576. // Grades for grade_item 3
  577. $grade = new stdClass();
  578. $grade->itemid = $this->grade_items[2]->id;
  579. $grade->userid = 1;
  580. $grade->rawgrade = 2;
  581. $grade->finalgrade = 6;
  582. $grade->scaleid = $this->scale[3]->id;
  583. $grade->timecreated = mktime();
  584. $grade->timemodified = mktime();
  585. $grade->information = '7 of 17 grade_grades';
  586. $grade->id = $DB->insert_record('grade_grades', $grade);
  587. $this->grade_grades[6] = $grade;
  588. $grade = new stdClass();
  589. $grade->itemid = $this->grade_items[2]->id;
  590. $grade->userid = 2;
  591. $grade->rawgrade = 3;
  592. $grade->finalgrade = 2;
  593. $grade->scaleid = $this->scale[3]->id;
  594. $grade->timecreated = mktime();
  595. $grade->timemodified = mktime();
  596. $grade->information = '8 of 17 grade_grades';
  597. $grade->id = $DB->insert_record('grade_grades', $grade);
  598. $this->grade_grades[] = $grade;
  599. $grade = new stdClass();
  600. $grade->itemid = $this->grade_items[2]->id;
  601. $grade->userid = 3;
  602. $grade->rawgrade = 1;
  603. $grade->finalgrade = 3;
  604. $grade->scaleid = $this->scale[3]->id;
  605. $grade->timecreated = mktime();
  606. $grade->timemodified = mktime();
  607. $grade->information = '9 of 17 grade_grades';
  608. $grade->id = $DB->insert_record('grade_grades', $grade);
  609. $this->grade_grades[] = $grade;
  610. // Grades for grade_item 7
  611. $grade = new stdClass();
  612. $grade->itemid = $this->grade_items[6]->id;
  613. $grade->userid = 1;
  614. $grade->rawgrade = 97;
  615. $grade->finalgrade = 69;
  616. $grade->timecreated = mktime();
  617. $grade->timemodified = mktime();
  618. $grade->information = '10 of 17 grade_grades';
  619. $grade->id = $DB->insert_record('grade_grades', $grade);
  620. $this->grade_grades[] = $grade;
  621. $grade = new stdClass();
  622. $grade->itemid = $this->grade_items[6]->id;
  623. $grade->userid = 2;
  624. $grade->rawgrade = 49;
  625. $grade->finalgrade = 87;
  626. $grade->timecreated = mktime();
  627. $grade->timemodified = mktime();
  628. $grade->information = '11 of 17 grade_grades';
  629. $grade->id = $DB->insert_record('grade_grades', $grade);
  630. $this->grade_grades[] = $grade;
  631. $grade = new stdClass();
  632. $grade->itemid = $this->grade_items[6]->id;
  633. $grade->userid = 3;
  634. $grade->rawgrade = 67;
  635. $grade->finalgrade = 94;
  636. $grade->timecreated = mktime();
  637. $grade->timemodified = mktime();
  638. $grade->information = '12 of 17 grade_grades';
  639. $grade->id = $DB->insert_record('grade_grades', $grade);
  640. $this->grade_grades[] = $grade;
  641. // Grades for grade_item 8
  642. $grade = new stdClass();
  643. $grade->itemid = $this->grade_items[7]->id;
  644. $grade->userid = 2;
  645. $grade->rawgrade = 3;
  646. $grade->finalgrade = 3;
  647. $grade->timecreated = mktime();
  648. $grade->timemodified = mktime();
  649. $grade->information = '13 of 17 grade_grades';
  650. $grade->id = $DB->insert_record('grade_grades', $grade);
  651. $this->grade_grades[] = $grade;
  652. $grade = new stdClass();
  653. $grade->itemid = $this->grade_items[7]->id;
  654. $grade->userid = 3;
  655. $grade->rawgrade = 6;
  656. $grade->finalgrade = 6;
  657. $grade->timecreated = mktime();
  658. $grade->timemodified = mktime();
  659. $grade->information = '14 of 17 grade_grades';
  660. $grade->id = $DB->insert_record('grade_grades', $grade);
  661. $this->grade_grades[] = $grade;
  662. // Grades for grade_item 9
  663. $grade = new stdClass();
  664. $grade->itemid = $this->grade_items[8]->id;
  665. $grade->userid = 1;
  666. $grade->rawgrade = 20;
  667. $grade->finalgrade = 20;
  668. $grade->timecreated = mktime();
  669. $grade->timemodified = mktime();
  670. $grade->information = '15 of 17 grade_grades';
  671. $grade->id = $DB->insert_record('grade_grades', $grade);
  672. $this->grade_grades[] = $grade;
  673. $grade = new stdClass();
  674. $grade->itemid = $this->grade_items[8]->id;
  675. $grade->userid = 2;
  676. $grade->rawgrade = 50;
  677. $grade->finalgrade = 50;
  678. $grade->timecreated = mktime();
  679. $grade->timemodified = mktime();
  680. $grade->information = '16 of 17 grade_grades';
  681. $grade->id = $DB->insert_record('grade_grades', $grade);
  682. $this->grade_grades[] = $grade;
  683. $grade = new stdClass();
  684. $grade->itemid = $this->grade_items[8]->id;
  685. $grade->userid = 3;
  686. $grade->rawgrade = 100;
  687. $grade->finalgrade = 100;
  688. $grade->timecreated = mktime();
  689. $grade->timemodified = mktime();
  690. $grade->information = '17 of 17 grade_grades';
  691. $grade->id = $DB->insert_record('grade_grades', $grade);
  692. $this->grade_grades[] = $grade;
  693. }
  694. /**
  695. * Load grade_outcome data into the database, and adds the corresponding objects to this class' variable.
  696. */
  697. function load_grade_outcomes() {
  698. global $DB;
  699. //this method is called once for each test method. Avoid adding things to $this->grade_outcomes multiple times
  700. $this->grade_outcomes = array();
  701. // Calculation for grade_item 1
  702. $grade_outcome = new stdClass();
  703. $grade_outcome->fullname = 'Team work';
  704. $grade_outcome->shortname = 'Team work';
  705. $grade_outcome->fullname = 'Team work outcome';
  706. $grade_outcome->timecreated = mktime();
  707. $grade_outcome->timemodified = mktime();
  708. $grade_outcome->scaleid = $this->scale[2]->id;
  709. $grade_outcome->id = $DB->insert_record('grade_outcomes', $grade_outcome);
  710. $this->grade_outcomes[] = $grade_outcome;
  711. // Calculation for grade_item 2
  712. $grade_outcome = new stdClass();
  713. $grade_outcome->fullname = 'Complete circuit board';
  714. $grade_outcome->shortname = 'Complete circuit board';
  715. $grade_outcome->fullname = 'Complete circuit board';
  716. $grade_outcome->timecreated = mktime();
  717. $grade_outcome->timemodified = mktime();
  718. $grade_outcome->scaleid = $this->scale[3]->id;
  719. $grade_outcome->id = $DB->insert_record('grade_outcomes', $grade_outcome);
  720. $this->grade_outcomes[] = $grade_outcome;
  721. // Calculation for grade_item 3
  722. $grade_outcome = new stdClass();
  723. $grade_outcome->fullname = 'Debug Java program';
  724. $grade_outcome->shortname = 'Debug Java program';
  725. $grade_outcome->fullname = 'Debug Java program';
  726. $grade_outcome->timecreated = mktime();
  727. $grade_outcome->timemodified = mktime();
  728. $grade_outcome->scaleid = $this->scale[4]->id;
  729. $grade_outcome->id = $DB->insert_record('grade_outcomes', $grade_outcome);
  730. $this->grade_outcomes[] = $grade_outcome;
  731. }
  732. /**
  733. * No unit tests here
  734. */
  735. }