[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
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 * Tests for the moodle_page class. 19 * 20 * @package core 21 * @category phpunit 22 * @copyright 2009 Tim Hunt 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 24 */ 25 26 defined('MOODLE_INTERNAL') || die(); 27 28 global $CFG; 29 require_once($CFG->libdir . '/pagelib.php'); 30 require_once($CFG->libdir . '/blocklib.php'); 31 32 33 class core_moodle_page_testcase extends advanced_testcase { 34 35 /** 36 * @var testable_moodle_page 37 */ 38 protected $testpage; 39 40 public function setUp() { 41 parent::setUp(); 42 $this->resetAfterTest(); 43 $this->testpage = new testable_moodle_page(); 44 } 45 46 public function test_course_returns_site_before_set() { 47 global $SITE; 48 // Validated. 49 $this->assertSame($SITE, $this->testpage->course); 50 } 51 52 public function test_setting_course_works() { 53 // Setup fixture. 54 $course = $this->getDataGenerator()->create_course(); 55 $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. 56 // Exercise SUT. 57 $this->testpage->set_course($course); 58 // Validated. 59 $this->assertEquals($course, $this->testpage->course); 60 } 61 62 public function test_global_course_and_page_course_are_same_with_global_page() { 63 global $COURSE, $PAGE; 64 // Setup fixture. 65 $course = $this->getDataGenerator()->create_course(); 66 $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. 67 $PAGE = $this->testpage; 68 // Exercise SUT. 69 $this->testpage->set_course($course); 70 // Validated. 71 $this->assertSame($COURSE, $this->testpage->course); 72 } 73 74 public function test_global_course_not_changed_with_non_global_page() { 75 global $COURSE; 76 $originalcourse = $COURSE; 77 // Setup fixture. 78 $course = $this->getDataGenerator()->create_course(); 79 $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. 80 // Exercise SUT. 81 $this->testpage->set_course($course); 82 // Validated. 83 $this->assertSame($originalcourse, $COURSE); 84 } 85 86 public function test_cannot_set_course_once_theme_set() { 87 // Setup fixture. 88 $this->testpage->force_theme(theme_config::DEFAULT_THEME); 89 $course = $this->getDataGenerator()->create_course(); 90 // Set expectation. 91 $this->setExpectedException('coding_exception'); 92 // Exercise SUT. 93 $this->testpage->set_course($course); 94 } 95 96 public function test_cannot_set_category_once_theme_set() { 97 // Setup fixture. 98 $this->testpage->force_theme(theme_config::DEFAULT_THEME); 99 // Set expectation. 100 $this->setExpectedException('coding_exception'); 101 // Exercise SUT. 102 $this->testpage->set_category_by_id(123); 103 } 104 105 public function test_cannot_set_category_once_course_set() { 106 // Setup fixture. 107 $course = $this->getDataGenerator()->create_course(); 108 $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. 109 $this->testpage->set_course($course); 110 // Set expectation. 111 $this->setExpectedException('coding_exception'); 112 // Exercise SUT. 113 $this->testpage->set_category_by_id(123); 114 } 115 116 public function test_categories_array_empty_for_front_page() { 117 global $SITE; 118 // Setup fixture. 119 $this->testpage->set_context(context_system::instance()); // Avoid trying to set the context. 120 $this->testpage->set_course($SITE); 121 // Exercise SUT and validate. 122 $this->assertEquals(array(), $this->testpage->categories); 123 } 124 125 public function test_set_state_normal_path() { 126 $course = $this->getDataGenerator()->create_course(); 127 $this->testpage->set_context(context_system::instance()); 128 $this->testpage->set_course($course); 129 130 $this->assertEquals(moodle_page::STATE_BEFORE_HEADER, $this->testpage->state); 131 132 $this->testpage->set_state(moodle_page::STATE_PRINTING_HEADER); 133 $this->assertEquals(moodle_page::STATE_PRINTING_HEADER, $this->testpage->state); 134 135 $this->testpage->set_state(moodle_page::STATE_IN_BODY); 136 $this->assertEquals(moodle_page::STATE_IN_BODY, $this->testpage->state); 137 138 $this->testpage->set_state(moodle_page::STATE_DONE); 139 $this->assertEquals(moodle_page::STATE_DONE, $this->testpage->state); 140 } 141 142 public function test_set_state_cannot_skip_one() { 143 // Set expectation. 144 $this->setExpectedException('coding_exception'); 145 // Exercise SUT. 146 $this->testpage->set_state(moodle_page::STATE_IN_BODY); 147 } 148 149 public function test_header_printed_false_initially() { 150 // Validated. 151 $this->assertFalse($this->testpage->headerprinted); 152 } 153 154 public function test_header_printed_becomes_true() { 155 $course = $this->getDataGenerator()->create_course(); 156 $this->testpage->set_context(context_system::instance()); 157 $this->testpage->set_course($course); 158 159 // Exercise SUT. 160 $this->testpage->set_state(moodle_page::STATE_PRINTING_HEADER); 161 $this->testpage->set_state(moodle_page::STATE_IN_BODY); 162 // Validated. 163 $this->assertTrue($this->testpage->headerprinted); 164 } 165 166 public function test_set_context() { 167 // Setup fixture. 168 $course = $this->getDataGenerator()->create_course(); 169 $context = context_course::instance($course->id); 170 // Exercise SUT. 171 $this->testpage->set_context($context); 172 // Validated. 173 $this->assertSame($context, $this->testpage->context); 174 } 175 176 public function test_pagetype_defaults_to_script() { 177 global $SCRIPT; 178 // Exercise SUT and validate. 179 $SCRIPT = '/index.php'; 180 $this->testpage->initialise_default_pagetype(); 181 $this->assertSame('site-index', $this->testpage->pagetype); 182 } 183 184 public function test_set_pagetype() { 185 // Exercise SUT. 186 $this->testpage->set_pagetype('a-page-type'); 187 // Validated. 188 $this->assertSame('a-page-type', $this->testpage->pagetype); 189 } 190 191 public function test_initialise_default_pagetype() { 192 // Exercise SUT. 193 $this->testpage->initialise_default_pagetype('admin/tool/unittest/index.php'); 194 // Validated. 195 $this->assertSame('admin-tool-unittest-index', $this->testpage->pagetype); 196 } 197 198 public function test_initialise_default_pagetype_fp() { 199 // Exercise SUT. 200 $this->testpage->initialise_default_pagetype('index.php'); 201 // Validated. 202 $this->assertSame('site-index', $this->testpage->pagetype); 203 } 204 205 public function test_get_body_classes_empty() { 206 // Validated. 207 $this->assertSame('', $this->testpage->bodyclasses); 208 } 209 210 public function test_get_body_classes_single() { 211 // Exercise SUT. 212 $this->testpage->add_body_class('aclassname'); 213 // Validated. 214 $this->assertSame('aclassname', $this->testpage->bodyclasses); 215 } 216 217 public function test_get_body_classes() { 218 // Exercise SUT. 219 $this->testpage->add_body_classes(array('aclassname', 'anotherclassname')); 220 // Validated. 221 $this->assertSame('aclassname anotherclassname', $this->testpage->bodyclasses); 222 } 223 224 public function test_url_to_class_name() { 225 $this->assertSame('example-com', $this->testpage->url_to_class_name('http://example.com')); 226 $this->assertSame('example-com--80', $this->testpage->url_to_class_name('http://example.com:80')); 227 $this->assertSame('example-com--moodle', $this->testpage->url_to_class_name('https://example.com/moodle')); 228 $this->assertSame('example-com--8080--nested-moodle', $this->testpage->url_to_class_name('https://example.com:8080/nested/moodle')); 229 } 230 231 public function test_set_docs_path() { 232 // Exercise SUT. 233 $this->testpage->set_docs_path('a/file/path'); 234 // Validated. 235 $this->assertSame('a/file/path', $this->testpage->docspath); 236 } 237 238 public function test_docs_path_defaults_from_pagetype() { 239 // Exercise SUT. 240 $this->testpage->set_pagetype('a-page-type'); 241 // Validated. 242 $this->assertSame('a/page/type', $this->testpage->docspath); 243 } 244 245 public function test_set_url_root() { 246 global $CFG; 247 // Exercise SUT. 248 $this->testpage->set_url('/'); 249 // Validated. 250 $this->assertSame($CFG->wwwroot . '/', $this->testpage->url->out()); 251 } 252 253 public function test_set_url_one_param() { 254 global $CFG; 255 // Exercise SUT. 256 $this->testpage->set_url('/mod/quiz/attempt.php', array('attempt' => 123)); 257 // Validated. 258 $this->assertSame($CFG->wwwroot . '/mod/quiz/attempt.php?attempt=123', $this->testpage->url->out()); 259 } 260 261 public function test_set_url_two_params() { 262 global $CFG; 263 // Exercise SUT. 264 $this->testpage->set_url('/mod/quiz/attempt.php', array('attempt' => 123, 'page' => 7)); 265 // Validated. 266 $this->assertSame($CFG->wwwroot . '/mod/quiz/attempt.php?attempt=123&page=7', $this->testpage->url->out()); 267 } 268 269 public function test_set_url_using_moodle_url() { 270 global $CFG; 271 // Fixture setup. 272 $url = new moodle_url('/mod/workshop/allocation.php', array('cmid' => 29, 'method' => 'manual')); 273 // Exercise SUT. 274 $this->testpage->set_url($url); 275 // Validated. 276 $this->assertSame($CFG->wwwroot . '/mod/workshop/allocation.php?cmid=29&method=manual', $this->testpage->url->out()); 277 } 278 279 public function test_set_url_sets_page_type() { 280 // Exercise SUT. 281 $this->testpage->set_url('/mod/quiz/attempt.php', array('attempt' => 123, 'page' => 7)); 282 // Validated. 283 $this->assertSame('mod-quiz-attempt', $this->testpage->pagetype); 284 } 285 286 public function test_set_url_does_not_change_explicit_page_type() { 287 // Setup fixture. 288 $this->testpage->set_pagetype('a-page-type'); 289 // Exercise SUT. 290 $this->testpage->set_url('/mod/quiz/attempt.php', array('attempt' => 123, 'page' => 7)); 291 // Validated. 292 $this->assertSame('a-page-type', $this->testpage->pagetype); 293 } 294 295 public function test_set_subpage() { 296 // Exercise SUT. 297 $this->testpage->set_subpage('somestring'); 298 // Validated. 299 $this->assertSame('somestring', $this->testpage->subpage); 300 } 301 302 public function test_set_heading() { 303 // Exercise SUT. 304 $this->testpage->set_heading('a heading'); 305 // Validated. 306 $this->assertSame('a heading', $this->testpage->heading); 307 } 308 309 public function test_set_title() { 310 // Exercise SUT. 311 $this->testpage->set_title('a title'); 312 // Validated. 313 $this->assertSame('a title', $this->testpage->title); 314 } 315 316 public function test_default_pagelayout() { 317 // Exercise SUT and Validate. 318 $this->assertSame('base', $this->testpage->pagelayout); 319 } 320 321 public function test_set_pagelayout() { 322 // Exercise SUT. 323 $this->testpage->set_pagelayout('type'); 324 // Validated. 325 $this->assertSame('type', $this->testpage->pagelayout); 326 } 327 328 public function test_setting_course_sets_context() { 329 // Setup fixture. 330 $course = $this->getDataGenerator()->create_course(); 331 $context = context_course::instance($course->id); 332 333 // Exercise SUT. 334 $this->testpage->set_course($course); 335 336 // Validated. 337 $this->assertSame($context, $this->testpage->context); 338 } 339 340 public function test_set_category_top_level() { 341 global $DB; 342 // Setup fixture. 343 $cat = $this->getDataGenerator()->create_category(); 344 $catdbrecord = $DB->get_record('course_categories', array('id' => $cat->id)); 345 // Exercise SUT. 346 $this->testpage->set_category_by_id($cat->id); 347 // Validated. 348 $this->assertEquals($catdbrecord, $this->testpage->category); 349 $this->assertSame(context_coursecat::instance($cat->id), $this->testpage->context); 350 } 351 352 public function test_set_nested_categories() { 353 global $DB; 354 // Setup fixture. 355 $topcat = $this->getDataGenerator()->create_category(); 356 $topcatdbrecord = $DB->get_record('course_categories', array('id' => $topcat->id)); 357 $subcat = $this->getDataGenerator()->create_category(array('parent'=>$topcat->id)); 358 $subcatdbrecord = $DB->get_record('course_categories', array('id' => $subcat->id)); 359 // Exercise SUT. 360 $this->testpage->set_category_by_id($subcat->id); 361 // Validated. 362 $categories = $this->testpage->categories; 363 $this->assertCount(2, $categories); 364 $this->assertEquals($topcatdbrecord, array_pop($categories)); 365 $this->assertEquals($subcatdbrecord, array_pop($categories)); 366 } 367 368 public function test_cm_null_initially() { 369 // Validated. 370 $this->assertNull($this->testpage->cm); 371 } 372 373 public function test_set_cm() { 374 // Setup fixture. 375 $course = $this->getDataGenerator()->create_course(); 376 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 377 $cm = get_coursemodule_from_id('forum', $forum->cmid); 378 // Exercise SUT. 379 $this->testpage->set_cm($cm); 380 // Validated. 381 $this->assertEquals($cm->id, $this->testpage->cm->id); 382 } 383 384 public function test_cannot_set_activity_record_before_cm() { 385 // Setup fixture. 386 $course = $this->getDataGenerator()->create_course(); 387 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 388 $cm = get_coursemodule_from_id('forum', $forum->cmid); 389 // Set expectation. 390 $this->setExpectedException('coding_exception'); 391 // Exercise SUT. 392 $this->testpage->set_activity_record($forum); 393 } 394 395 public function test_setting_cm_sets_context() { 396 // Setup fixture. 397 $course = $this->getDataGenerator()->create_course(); 398 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 399 $cm = get_coursemodule_from_id('forum', $forum->cmid); 400 // Exercise SUT. 401 $this->testpage->set_cm($cm); 402 // Validated. 403 $this->assertSame(context_module::instance($cm->id), $this->testpage->context); 404 } 405 406 public function test_activity_record_loaded_if_not_set() { 407 // Setup fixture. 408 $course = $this->getDataGenerator()->create_course(); 409 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 410 $cm = get_coursemodule_from_id('forum', $forum->cmid); 411 // Exercise SUT. 412 $this->testpage->set_cm($cm); 413 // Validated. 414 unset($forum->cmid); 415 $this->assertEquals($forum, $this->testpage->activityrecord); 416 } 417 418 public function test_set_activity_record() { 419 // Setup fixture. 420 $course = $this->getDataGenerator()->create_course(); 421 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 422 $cm = get_coursemodule_from_id('forum', $forum->cmid); 423 $this->testpage->set_cm($cm); 424 // Exercise SUT. 425 $this->testpage->set_activity_record($forum); 426 // Validated. 427 unset($forum->cmid); 428 $this->assertEquals($forum, $this->testpage->activityrecord); 429 } 430 431 public function test_cannot_set_inconsistent_activity_record_course() { 432 // Setup fixture. 433 $course = $this->getDataGenerator()->create_course(); 434 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 435 $cm = get_coursemodule_from_id('forum', $forum->cmid); 436 $this->testpage->set_cm($cm); 437 // Set expectation. 438 $this->setExpectedException('coding_exception'); 439 // Exercise SUT. 440 $forum->course = 13; 441 $this->testpage->set_activity_record($forum); 442 } 443 444 public function test_cannot_set_inconsistent_activity_record_instance() { 445 // Setup fixture. 446 $course = $this->getDataGenerator()->create_course(); 447 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 448 $cm = get_coursemodule_from_id('forum', $forum->cmid); 449 $this->testpage->set_cm($cm); 450 // Set expectation. 451 $this->setExpectedException('coding_exception'); 452 // Exercise SUT. 453 $forum->id = 13; 454 $this->testpage->set_activity_record($forum); 455 } 456 457 public function test_setting_cm_sets_course() { 458 // Setup fixture. 459 $course = $this->getDataGenerator()->create_course(); 460 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 461 $cm = get_coursemodule_from_id('forum', $forum->cmid); 462 // Exercise SUT. 463 $this->testpage->set_cm($cm); 464 // Validated. 465 $this->assertEquals($course->id, $this->testpage->course->id); 466 } 467 468 public function test_set_cm_with_course_and_activity_no_db() { 469 // Setup fixture. 470 $course = $this->getDataGenerator()->create_course(); 471 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 472 $cm = get_coursemodule_from_id('forum', $forum->cmid); 473 // This only works without db if we already have modinfo cache 474 // Exercise SUT. 475 $this->testpage->set_cm($cm, $course, $forum); 476 // Validated. 477 $this->assertEquals($cm->id, $this->testpage->cm->id); 478 $this->assertEquals($course->id, $this->testpage->course->id); 479 unset($forum->cmid); 480 $this->assertEquals($forum, $this->testpage->activityrecord); 481 } 482 483 public function test_cannot_set_cm_with_inconsistent_course() { 484 // Setup fixture. 485 $course = $this->getDataGenerator()->create_course(); 486 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 487 $cm = get_coursemodule_from_id('forum', $forum->cmid); 488 // Set expectation. 489 $this->setExpectedException('coding_exception'); 490 // Exercise SUT. 491 $cm->course = 13; 492 $this->testpage->set_cm($cm, $course); 493 } 494 495 public function test_get_activity_name() { 496 // Setup fixture. 497 $course = $this->getDataGenerator()->create_course(); 498 $forum = $this->getDataGenerator()->create_module('forum', array('course'=>$course->id)); 499 $cm = get_coursemodule_from_id('forum', $forum->cmid); 500 // Exercise SUT. 501 $this->testpage->set_cm($cm, $course, $forum); 502 // Validated. 503 $this->assertSame('forum', $this->testpage->activityname); 504 } 505 506 public function test_user_is_editing_on() { 507 // We are relying on the fact that unit tests are always run by admin, to 508 // ensure the user_allows_editing call returns true. 509 510 // Setup fixture. 511 global $USER; 512 513 $this->testpage->set_context(context_system::instance()); 514 $this->setAdminUser(); 515 516 $USER->editing = true; 517 // Validated. 518 $this->assertTrue($this->testpage->user_is_editing()); 519 } 520 521 public function test_user_is_editing_off() { 522 // We are relying on the fact that unit tests are always run by admin, to 523 // ensure the user_allows_editing call returns true. 524 525 // Setup fixture. 526 global $USER; 527 528 $this->testpage->set_context(context_system::instance()); 529 $this->setAdminUser(); 530 531 $USER->editing = false; 532 // Validated. 533 $this->assertFalse($this->testpage->user_is_editing()); 534 } 535 536 public function test_default_editing_capabilities() { 537 $this->testpage->set_context(context_system::instance()); 538 $this->setAdminUser(); 539 540 // Validated. 541 $this->assertEquals(array('moodle/site:manageblocks'), $this->testpage->all_editing_caps()); 542 } 543 544 public function test_other_block_editing_cap() { 545 $this->testpage->set_context(context_system::instance()); 546 $this->setAdminUser(); 547 548 // Exercise SUT. 549 $this->testpage->set_blocks_editing_capability('moodle/my:manageblocks'); 550 // Validated. 551 $this->assertEquals(array('moodle/my:manageblocks'), $this->testpage->all_editing_caps()); 552 } 553 554 public function test_other_editing_cap() { 555 $this->testpage->set_context(context_system::instance()); 556 $this->setAdminUser(); 557 558 // Exercise SUT. 559 $this->testpage->set_other_editing_capability('moodle/course:manageactivities'); 560 // Validated. 561 $actualcaps = $this->testpage->all_editing_caps(); 562 $expectedcaps = array('moodle/course:manageactivities', 'moodle/site:manageblocks'); 563 $this->assertEquals(array_values($expectedcaps), array_values($actualcaps)); 564 } 565 566 public function test_other_editing_caps() { 567 $this->testpage->set_context(context_system::instance()); 568 $this->setAdminUser(); 569 570 // Exercise SUT. 571 $this->testpage->set_other_editing_capability(array('moodle/course:manageactivities', 'moodle/site:other')); 572 // Validated. 573 $actualcaps = $this->testpage->all_editing_caps(); 574 $expectedcaps = array('moodle/course:manageactivities', 'moodle/site:other', 'moodle/site:manageblocks'); 575 $this->assertEquals(array_values($expectedcaps), array_values($actualcaps)); 576 } 577 578 /** 579 * Test getting a renderer. 580 */ 581 public function test_get_renderer() { 582 global $OUTPUT, $PAGE; 583 $oldoutput = $OUTPUT; 584 $oldpage = $PAGE; 585 $PAGE = $this->testpage; 586 587 $this->testpage->set_pagelayout('standard'); 588 $this->assertEquals('standard', $this->testpage->pagelayout); 589 // Initialise theme and output for the next tests. 590 $this->testpage->initialise_theme_and_output(); 591 // Check the generated $OUTPUT object is a core renderer. 592 $this->assertInstanceOf('core_renderer', $OUTPUT); 593 // Check we can get a core renderer if we explicitly request one (no component). 594 $this->assertInstanceOf('core_renderer', $this->testpage->get_renderer('core')); 595 // Check we get a CLI renderer if we request a maintenance renderer. The CLI target should take precedence. 596 $this->assertInstanceOf('core_renderer_cli', 597 $this->testpage->get_renderer('core', null, RENDERER_TARGET_MAINTENANCE)); 598 599 // Check we can get a coures renderer if we explicitly request one (valid component). 600 $this->assertInstanceOf('core_course_renderer', $this->testpage->get_renderer('core', 'course')); 601 602 // Check a properly invalid component. 603 try { 604 $this->testpage->get_renderer('core', 'monkeys'); 605 $this->fail('Request for renderer with invalid component didn\'t throw expected exception.'); 606 } catch (coding_exception $exception) { 607 $this->assertEquals('monkeys', $exception->debuginfo); 608 } 609 610 $PAGE = $oldpage; 611 $OUTPUT = $oldoutput; 612 } 613 614 /** 615 * Tests getting a renderer with a maintenance layout. 616 * 617 * This layout has special hacks in place in order to deliver a "maintenance" renderer. 618 */ 619 public function test_get_renderer_maintenance() { 620 global $OUTPUT, $PAGE; 621 $oldoutput = $OUTPUT; 622 $oldpage = $PAGE; 623 $PAGE = $this->testpage; 624 625 $this->testpage->set_pagelayout('maintenance'); 626 $this->assertEquals('maintenance', $this->testpage->pagelayout); 627 // Initialise theme and output for the next tests. 628 $this->testpage->initialise_theme_and_output(); 629 // Check the generated $OUTPUT object is a core cli renderer. 630 // It shouldn't be maintenance because there the cli target should take greater precedence. 631 $this->assertInstanceOf('core_renderer_cli', $OUTPUT); 632 // Check we can get a core renderer if we explicitly request one (no component). 633 $this->assertInstanceOf('core_renderer', $this->testpage->get_renderer('core')); 634 // Check we get a CLI renderer if we request a maintenance renderer. The CLI target should take precedence. 635 $this->assertInstanceOf('core_renderer_cli', 636 $this->testpage->get_renderer('core', null, RENDERER_TARGET_MAINTENANCE)); 637 // Check we can get a coures renderer if we explicitly request one (valid component). 638 $this->assertInstanceOf('core_course_renderer', $this->testpage->get_renderer('core', 'course')); 639 640 try { 641 $this->testpage->get_renderer('core', 'monkeys'); 642 $this->fail('Request for renderer with invalid component didn\'t throw expected exception.'); 643 } catch (coding_exception $exception) { 644 $this->assertEquals('monkeys', $exception->debuginfo); 645 } 646 647 $PAGE = $oldpage; 648 $OUTPUT = $oldoutput; 649 } 650 651 public function test_render_to_cli() { 652 global $OUTPUT; 653 654 $footer = $OUTPUT->footer(); 655 $this->assertEmpty($footer, 'cli output does not have a footer.'); 656 } 657 } 658 659 /** 660 * Test-specific subclass to make some protected things public. 661 */ 662 class testable_moodle_page extends moodle_page { 663 public function initialise_default_pagetype($script = null) { 664 parent::initialise_default_pagetype($script); 665 } 666 public function url_to_class_name($url) { 667 return parent::url_to_class_name($url); 668 } 669 public function all_editing_caps() { 670 return parent::all_editing_caps(); 671 } 672 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |