MDL-29719 Option to display course shortname alongside fullname on course lists
[moodle.git] / course / simpletest / testcourselib.php
CommitLineData
aa6c1ced 1<?php
3440ec12 2
3///////////////////////////////////////////////////////////////////////////
4// //
5// NOTICE OF COPYRIGHT //
6// //
7// Moodle - Modular Object-Oriented Dynamic Learning Environment //
8// http://moodle.org //
9// //
10// Copyright (C) 1999 onwards Martin Dougiamas http://dougiamas.com //
11// //
12// This program is free software; you can redistribute it and/or modify //
13// it under the terms of the GNU General Public License as published by //
14// the Free Software Foundation; either version 2 of the License, or //
15// (at your option) any later version. //
16// //
17// This program is distributed in the hope that it will be useful, //
18// but WITHOUT ANY WARRANTY; without even the implied warranty of //
19// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
20// GNU General Public License for more details: //
21// //
22// http://www.gnu.org/copyleft/gpl.html //
23// //
24///////////////////////////////////////////////////////////////////////////
25
26/**
27 * Unit tests for Course lib.
28 *
29 * @author nicolasconnault@gmail.com
30 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
31 * @package moodlecore
32 */
33
34if (!defined('MOODLE_INTERNAL')) {
35 die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
36}
37
38require_once($CFG->dirroot . '/course/lib.php');
3440ec12 39
9870944f 40class courselib_test extends UnitTestCase {
3440ec12 41 var $realDB;
d47cf63d 42 public static $includecoverage = array('course/lib.php');
3440ec12 43
44 function setUp() {
45 global $DB;
9870944f 46 Mock::generate(get_class($DB), 'mockDB');
47 $this->realDB = $DB;
3440ec12 48 $DB = new mockDB();
49 }
50
51 function tearDown() {
52 global $DB;
53 $DB = $this->realDB;
54 }
55
56 function testMoveSection() {
57 global $DB;
58 $course = new stdClass();
59 $course->numsections = 10;
60 $course->id = 1;
61 $sections = array(20 => 0, 21 => 1, 22 => 2, 23 => 3, 24 => 4, 25 => 5);
62
63 $DB->setReturnValueAt(0, 'get_records_menu', $sections);
64 $DB->expectAt(0, 'set_field', array('course_sections', 'section', 0, array('id' => 20)));
65 $DB->expectAt(1, 'set_field', array('course_sections', 'section', 1, array('id' => 21)));
66 $DB->expectAt(2, 'set_field', array('course_sections', 'section', 2, array('id' => 23)));
67 $DB->expectAt(3, 'set_field', array('course_sections', 'section', 3, array('id' => 24)));
68 $DB->expectAt(4, 'set_field', array('course_sections', 'section', 4, array('id' => 22)));
69 $DB->expectAt(5, 'set_field', array('course_sections', 'section', 5, array('id' => 25)));
70 move_section_to($course, 2, 4);
71
72 $DB->setReturnValueAt(1, 'get_records_menu', $sections);
73 $DB->expectAt(6, 'set_field', array('course_sections', 'section', 0, array('id' => 20)));
74 $DB->expectAt(7, 'set_field', array('course_sections', 'section', 1, array('id' => 24)));
75 $DB->expectAt(8, 'set_field', array('course_sections', 'section', 2, array('id' => 21)));
76 $DB->expectAt(9, 'set_field', array('course_sections', 'section', 3, array('id' => 22)));
77 $DB->expectAt(10, 'set_field', array('course_sections', 'section', 4, array('id' => 23)));
78 $DB->expectAt(11, 'set_field', array('course_sections', 'section', 5, array('id' => 25)));
79 move_section_to($course, 4, 0);
80 }
81
82 function testReorderSections() {
83 $sections = array(20 => 0, 21 => 1, 22 => 2, 23 => 3, 24 => 4, 25 => 5);
84 $this->assertFalse(reorder_sections(1,3,4));
85
86 $newsections = reorder_sections($sections, 2, 4);
87 $newsections_flipped = array_flip($newsections);
88
89 $this->assertEqual(20, reset($newsections_flipped));
90 $this->assertEqual(21, next($newsections_flipped));
91 $this->assertEqual(23, next($newsections_flipped));
92 $this->assertEqual(24, next($newsections_flipped));
93 $this->assertEqual(22, next($newsections_flipped));
94 $this->assertEqual(25, next($newsections_flipped));
95
96 $newsections = reorder_sections($sections, 4, 0);
97 $newsections_flipped = array_flip($newsections);
98
99 $this->assertEqual(20, reset($newsections_flipped));
100 $this->assertEqual(24, next($newsections_flipped));
101 $this->assertEqual(21, next($newsections_flipped));
102 $this->assertEqual(22, next($newsections_flipped));
103 $this->assertEqual(23, next($newsections_flipped));
104 $this->assertEqual(25, next($newsections_flipped));
105
106 $newsections = reorder_sections($sections, 1, 5);
107 $newsections_flipped = array_flip($newsections);
108
109 $this->assertEqual(20, reset($newsections_flipped));
110 $this->assertEqual(22, next($newsections_flipped));
111 $this->assertEqual(23, next($newsections_flipped));
112 $this->assertEqual(24, next($newsections_flipped));
113 $this->assertEqual(25, next($newsections_flipped));
114 $this->assertEqual(21, next($newsections_flipped));
115 }
7fb46992 116
117 function test_get_course_display_name_for_list() {
118 global $CFG;
119
120 $course = (object)array('shortname' => 'FROG101',
121 'fullname' => 'Introduction to pond life');
122
123 // Store config value in case other tests rely on it
124 $oldcfg = $CFG->courselistshortnames;
125
126 $CFG->courselistshortnames = 0;
127 $this->assertEqual('Introduction to pond life',
128 get_course_display_name_for_list($course));
129
130 $CFG->courselistshortnames = 1;
131 $this->assertEqual('FROG101 Introduction to pond life',
132 get_course_display_name_for_list($course));
133
134 $CFG->courselistshortnames = $oldcfg;
135 }
3440ec12 136}