See Release Notes
Long Term Support Release
Differences Between: [Versions 39 and 311] [Versions 39 and 400] [Versions 39 and 401] [Versions 39 and 402] [Versions 39 and 403]
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 /** 18 * mod_lesson generator tests 19 * 20 * @package mod_lesson 21 * @category test 22 * @copyright 2013 Marina Glancy 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 24 */ 25 26 /** 27 * Genarator tests class for mod_lesson. 28 * 29 * @package mod_lesson 30 * @category test 31 * @copyright 2013 Marina Glancy 32 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 33 */ 34 class mod_lesson_generator_testcase extends advanced_testcase { 35 36 public function test_create_instance() { 37 global $DB; 38 $this->resetAfterTest(); 39 $this->setAdminUser(); 40 41 $course = $this->getDataGenerator()->create_course(); 42 43 $this->assertFalse($DB->record_exists('lesson', array('course' => $course->id))); 44 $lesson = $this->getDataGenerator()->create_module('lesson', array('course' => $course)); 45 $records = $DB->get_records('lesson', array('course' => $course->id), 'id'); 46 $this->assertEquals(1, count($records)); 47 $this->assertTrue(array_key_exists($lesson->id, $records)); 48 49 $params = array('course' => $course->id, 'name' => 'Another lesson'); 50 $lesson = $this->getDataGenerator()->create_module('lesson', $params); 51 $records = $DB->get_records('lesson', array('course' => $course->id), 'id'); 52 $this->assertEquals(2, count($records)); 53 $this->assertEquals('Another lesson', $records[$lesson->id]->name); 54 } 55 56 public function test_create_content() { 57 global $DB; 58 $this->resetAfterTest(); 59 $this->setAdminUser(); 60 61 $course = $this->getDataGenerator()->create_course(); 62 $lesson = $this->getDataGenerator()->create_module('lesson', array('course' => $course)); 63 $lessongenerator = $this->getDataGenerator()->get_plugin_generator('mod_lesson'); 64 65 $page1 = $lessongenerator->create_content($lesson); 66 $page2 = $lessongenerator->create_content($lesson, array('title' => 'Custom title')); 67 $records = $DB->get_records('lesson_pages', array('lessonid' => $lesson->id), 'id'); 68 $this->assertEquals(2, count($records)); 69 $this->assertEquals($page1->id, $records[$page1->id]->id); 70 $this->assertEquals($page2->id, $records[$page2->id]->id); 71 $this->assertEquals('Custom title', $records[$page2->id]->title); 72 } 73 74 /** 75 * This tests the true/false question generator. 76 */ 77 public function test_create_question_truefalse() { 78 global $DB; 79 $this->resetAfterTest(); 80 $this->setAdminUser(); 81 82 $course = $this->getDataGenerator()->create_course(); 83 $lesson = $this->getDataGenerator()->create_module('lesson', array('course' => $course)); 84 $lessongenerator = $this->getDataGenerator()->get_plugin_generator('mod_lesson'); 85 86 $page1 = $lessongenerator->create_question_truefalse($lesson); 87 $page2 = $lessongenerator->create_question_truefalse($lesson, array('title' => 'Custom title')); 88 $records = $DB->get_records('lesson_pages', array('lessonid' => $lesson->id), 'id'); 89 $p1answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page1->id), 'id'); 90 $p2answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page2->id), 'id'); 91 $this->assertCount(2, $records); 92 $this->assertCount(2, $p1answers); // True/false only supports 2 answer records. 93 $this->assertCount(2, $p2answers); 94 $this->assertEquals($page1->id, $records[$page1->id]->id); 95 $this->assertEquals($page2->id, $records[$page2->id]->id); 96 $this->assertEquals($page2->title, $records[$page2->id]->title); 97 } 98 99 /** 100 * This tests the multichoice question generator. 101 */ 102 public function test_create_question_multichoice() { 103 global $DB; 104 $this->resetAfterTest(); 105 $this->setAdminUser(); 106 107 $course = $this->getDataGenerator()->create_course(); 108 $lesson = $this->getDataGenerator()->create_module('lesson', array('course' => $course)); 109 $lessongenerator = $this->getDataGenerator()->get_plugin_generator('mod_lesson'); 110 111 $page1 = $lessongenerator->create_question_multichoice($lesson); 112 $page2 = $lessongenerator->create_question_multichoice($lesson, array('title' => 'Custom title')); 113 $records = $DB->get_records('lesson_pages', array('lessonid' => $lesson->id), 'id'); 114 $p1answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page1->id), 'id'); 115 $p2answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page2->id), 'id'); 116 $this->assertCount(2, $records); 117 $this->assertCount(2, $p1answers); // Multichoice requires at least 2 records. 118 $this->assertCount(2, $p2answers); 119 $this->assertEquals($page1->id, $records[$page1->id]->id); 120 $this->assertEquals($page2->id, $records[$page2->id]->id); 121 $this->assertEquals($page2->title, $records[$page2->id]->title); 122 } 123 124 /** 125 * This tests the essay question generator. 126 */ 127 public function test_create_question_essay() { 128 global $DB; 129 $this->resetAfterTest(); 130 $this->setAdminUser(); 131 132 $course = $this->getDataGenerator()->create_course(); 133 $lesson = $this->getDataGenerator()->create_module('lesson', array('course' => $course)); 134 $lessongenerator = $this->getDataGenerator()->get_plugin_generator('mod_lesson'); 135 136 $page1 = $lessongenerator->create_question_essay($lesson); 137 $page2 = $lessongenerator->create_question_essay($lesson, array('title' => 'Custom title')); 138 $records = $DB->get_records('lesson_pages', array('lessonid' => $lesson->id), 'id'); 139 $p1answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page1->id), 'id'); 140 $p2answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page2->id), 'id'); 141 $this->assertCount(2, $records); 142 $this->assertCount(1, $p1answers); // Essay creates a single (empty) answer record. 143 $this->assertCount(1, $p2answers); 144 $this->assertEquals($page1->id, $records[$page1->id]->id); 145 $this->assertEquals($page2->id, $records[$page2->id]->id); 146 $this->assertEquals($page2->title, $records[$page2->id]->title); 147 } 148 149 /** 150 * This tests the matching question generator. 151 */ 152 public function test_create_question_matching() { 153 global $DB; 154 $this->resetAfterTest(); 155 $this->setAdminUser(); 156 157 $course = $this->getDataGenerator()->create_course(); 158 $lesson = $this->getDataGenerator()->create_module('lesson', array('course' => $course)); 159 $lessongenerator = $this->getDataGenerator()->get_plugin_generator('mod_lesson'); 160 161 $page1 = $lessongenerator->create_question_matching($lesson); 162 $page2 = $lessongenerator->create_question_matching($lesson, array('title' => 'Custom title')); 163 $records = $DB->get_records('lesson_pages', array('lessonid' => $lesson->id), 'id'); 164 $p1answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page1->id), 'id'); 165 $p2answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page2->id), 'id'); 166 $this->assertCount(2, $records); 167 $this->assertCount(4, $p1answers); // Matching creates two extra records plus 1 for each answer value. 168 $this->assertCount(4, $p2answers); 169 $this->assertEquals($page1->id, $records[$page1->id]->id); 170 $this->assertEquals($page2->id, $records[$page2->id]->id); 171 $this->assertEquals($page2->title, $records[$page2->id]->title); 172 } 173 174 /** 175 * This tests the numeric question generator. 176 */ 177 public function test_create_question_numeric() { 178 global $DB; 179 $this->resetAfterTest(); 180 $this->setAdminUser(); 181 182 $course = $this->getDataGenerator()->create_course(); 183 $lesson = $this->getDataGenerator()->create_module('lesson', array('course' => $course)); 184 $lessongenerator = $this->getDataGenerator()->get_plugin_generator('mod_lesson'); 185 186 $page1 = $lessongenerator->create_question_numeric($lesson); 187 $page2 = $lessongenerator->create_question_numeric($lesson, array('title' => 'Custom title')); 188 $records = $DB->get_records('lesson_pages', array('lessonid' => $lesson->id), 'id'); 189 $p1answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page1->id), 'id'); 190 $p2answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page2->id), 'id'); 191 $this->assertCount(2, $records); 192 $this->assertCount(1, $p1answers); // Numeric only requires 1 answer. 193 $this->assertCount(1, $p2answers); 194 $this->assertEquals($page1->id, $records[$page1->id]->id); 195 $this->assertEquals($page2->id, $records[$page2->id]->id); 196 $this->assertEquals($page2->title, $records[$page2->id]->title); 197 } 198 199 /** 200 * This tests the shortanswer question generator. 201 */ 202 public function test_create_question_shortanswer() { 203 global $DB; 204 $this->resetAfterTest(); 205 $this->setAdminUser(); 206 207 $course = $this->getDataGenerator()->create_course(); 208 $lesson = $this->getDataGenerator()->create_module('lesson', array('course' => $course)); 209 $lessongenerator = $this->getDataGenerator()->get_plugin_generator('mod_lesson'); 210 211 $page1 = $lessongenerator->create_question_shortanswer($lesson); 212 $page2 = $lessongenerator->create_question_shortanswer($lesson, array('title' => 'Custom title')); 213 $records = $DB->get_records('lesson_pages', array('lessonid' => $lesson->id), 'id'); 214 $p1answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page1->id), 'id'); 215 $p2answers = $DB->get_records('lesson_answers', array('lessonid' => $lesson->id, 'pageid' => $page2->id), 'id'); 216 $this->assertCount(2, $records); 217 $this->assertCount(1, $p1answers); // Shortanswer only requires 1 answer. 218 $this->assertCount(1, $p2answers); 219 $this->assertEquals($page1->id, $records[$page1->id]->id); 220 $this->assertEquals($page2->id, $records[$page2->id]->id); 221 $this->assertEquals($page2->title, $records[$page2->id]->title); 222 } 223 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body