mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
131 lines
5 KiB
PHP
131 lines
5 KiB
PHP
<?php // $Id$
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// NOTICE OF COPYRIGHT //
|
|
// //
|
|
// Moodle - Modular Object-Oriented Dynamic Learning Environment //
|
|
// http://moodle.org //
|
|
// //
|
|
// Copyright (C) 1999 onwards Martin Dougiamas http://dougiamas.com //
|
|
// //
|
|
// This program is free software; you can redistribute it and/or modify //
|
|
// it under the terms of the GNU General Public License as published by //
|
|
// the Free Software Foundation; either version 2 of the License, or //
|
|
// (at your option) any later version. //
|
|
// //
|
|
// This program is distributed in the hope that it will be useful, //
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
|
// GNU General Public License for more details: //
|
|
// //
|
|
// http://www.gnu.org/copyleft/gpl.html //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* Tests for the parts of ../filterlib.php that handle creating filter objects,
|
|
* and using them to filter strings.
|
|
*
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
|
|
* @package moodlecore
|
|
*/
|
|
|
|
if (!defined('MOODLE_INTERNAL')) {
|
|
die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
|
|
}
|
|
|
|
require_once($CFG->libdir . '/filterlib.php');
|
|
|
|
class testable_filter_manager extends filter_manager {
|
|
|
|
public function __construct() {
|
|
parent::__construct();
|
|
}
|
|
public function make_filter_object($filtername, $context, $courseid, $localconfig) {
|
|
return parent::make_filter_object($filtername, $context, $courseid, $localconfig);
|
|
}
|
|
public function apply_filter_chain($text, $filterchain) {
|
|
return parent::apply_filter_chain($text, $filterchain);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Test functions that affect filter_active table with contextid = $syscontextid.
|
|
*/
|
|
class filter_manager_test extends UnitTestCase {
|
|
public static $includecoverage = array('lib/filterlib.php');
|
|
protected $filtermanager;
|
|
protected $olddirroot;
|
|
|
|
public function setUp() {
|
|
global $CFG;
|
|
$this->filtermanager = new testable_filter_manager();
|
|
$this->olddirroot = $CFG->dirroot;
|
|
$CFG->dirroot = $CFG->dataroot . '/temp';
|
|
}
|
|
|
|
public function tearDown() {
|
|
global $CFG;
|
|
$CFG->dirroot = $this->olddirroot;
|
|
}
|
|
|
|
/** Basically does file_put_contents, but ensures the directory exists first. */
|
|
protected function write_file($path, $content) {
|
|
global $CFG;
|
|
make_upload_directory(str_replace($CFG->dataroot . '/', '', dirname($path)));
|
|
file_put_contents($path, $content);
|
|
}
|
|
|
|
public function test_make_filter_object_newstyle() {
|
|
global $CFG;
|
|
$this->write_file($CFG->dirroot . '/filter/makenewstyletest/filter.php', <<<ENDCODE
|
|
<?php
|
|
class makenewstyletest_filter extends moodle_text_filter {
|
|
public function filter(\$text) {
|
|
return \$text;
|
|
}
|
|
}
|
|
ENDCODE
|
|
);
|
|
$filter = $this->filtermanager->make_filter_object('filter/makenewstyletest', null, 1, array());
|
|
$this->assertIsA($filter, 'moodle_text_filter');
|
|
$this->assertNotA($filter, 'legacy_filter');
|
|
}
|
|
|
|
public function test_make_filter_object_legacy() {
|
|
global $CFG;
|
|
$this->write_file($CFG->dirroot . '/filter/makelegacytest/filter.php', <<<ENDCODE
|
|
<?php
|
|
function makelegacytest_filter(\$courseid, \$text) {
|
|
return \$text;
|
|
}
|
|
ENDCODE
|
|
);
|
|
$filter = $this->filtermanager->make_filter_object('filter/makelegacytest', null, 1, array());
|
|
$this->assertIsA($filter, 'legacy_filter');
|
|
}
|
|
|
|
public function test_make_filter_object_missing() {
|
|
$this->assertNull($this->filtermanager->make_filter_object('filter/nonexistant', null, 1, array()));
|
|
}
|
|
|
|
public function test_apply_filter_chain() {
|
|
$filterchain = array(new doubleup_test_filter(null, 1, array()), new killfrogs_test_filter(null, 1, array()));
|
|
$this->assertEqual('pawn pawn', $this->filtermanager->apply_filter_chain('frogspawn', $filterchain));
|
|
}
|
|
}
|
|
|
|
class doubleup_test_filter extends moodle_text_filter {
|
|
public function filter($text) {
|
|
return $text . ' ' . $text;
|
|
}
|
|
}
|
|
|
|
class killfrogs_test_filter extends moodle_text_filter {
|
|
public function filter($text) {
|
|
return str_replace('frogs', '', $text);
|
|
}
|
|
}
|
|
|
|
?>
|