Commit 0adf6150 authored by Taddes Kroes's avatar Taddes Kroes

Added unit tests for 'template' plugin.

parent b3fc6f02
......@@ -115,7 +115,7 @@ class pQuery {
*/
static function error($error /* , $arg1, $arg2... */) {
$args = func_get_args();
$error = nl2br(call_user_func_array('sprintf', $args));
$error = call_user_func_array('sprintf', $args);
throw new pQueryException($error);
}
......@@ -251,13 +251,28 @@ class pQuery {
if( in_array($name, (array)$class_name::$variable_alias) )
$this->variable = $value;
}
/**
* Handler for pQuery exceptions.
*
* If the execption is a (@link pQueryException}, exit the script with
* its message. Otherwise, throw the exception further.
*
* @param Exception $e The exception to handle.
*/
function exception_handler($e) {
if( $e instanceof pQueryException )
die(nl2br($e->getMessage()));
throw $e;
}
}
/**
* Exception class for error throwing
*/
class pQueryException extends Exception {
}
/**
......@@ -299,9 +314,14 @@ function _p($variable, $plugin=null) {
return new $class_name($variable);
}
/**
/*
* Set an alias for the bas class consistent with plugin aliases.
*/
class_alias('pQuery', '__p');
/*
* Set the exception handler
*/
set_exception_handler('__p::exception_handler');
?>
\ No newline at end of file
......@@ -248,8 +248,14 @@ function _tpl($path) {
return pQuery::create('tpl', $path);
}
/*
* Add plugin to pQuery
*/
__p::extend('pQueryTemplate', 'tpl');
/*
* Set initial root to pQuery root folder
*/
__tpl::set_root('');
?>
\ No newline at end of file
......@@ -28,9 +28,9 @@ while( !$a->is_empty() ) {
$results = $sql->fetch_all('object');
$results = _arr($results);
debug($results);
debug($results);*/
__tpl::set_root('templates', false);
/*__tpl::set_root('templates', false);
$tpl = _tpl('test.tpl');
$test1 = $tpl->data->add('test1', array('var' => 'some-variable'));
......
lorem
block:test1
ipsum
SOME-VARIABLE
{not_a_variable}
block:test2
dolor
end:test2
sit
end:test1
block:test1
ipsum
SOME-OTHER-VARIABLE
{not_a_variable}
sit
end:test1
amet
block:test3
consectetur
end:test3
adipiscing
\ No newline at end of file
......@@ -3,12 +3,75 @@
__p::load_plugin('template');
class pQueryTemplateTest extends UnitTestCase {
const TEMPLATES_FOLDER = 'templates/';
var $templates_folder;
var $file;
var $tpl;
function __construct() {
parent::__construct('pQuery template plugin');
}
function test_() {
function setUp() {
$this->templates_folder = PQUERY_ROOT.'test/'.self::TEMPLATES_FOLDER;
__tpl::set_root($this->templates_folder, false);
$this->file = 'test.tpl';
$this->tpl = _tpl($this->file);
}
function test_add_root_relative() {
$folder = PQUERY_ROOT.'test/';
$folder_relative = 'test/';
__tpl::add_root($folder_relative);
$this->assertTrue(in_array($folder, __tpl::$include_path), 'folder was not added to include path');
}
function test_add_root_absolute() {
$folder = PQUERY_ROOT.'test/';
__tpl::add_root($folder, false);
$this->assertTrue(in_array($folder, __tpl::$include_path), 'folder was not added to include path');
}
function test_add_root_failure() {
$this->expectException('pQueryException');
__tpl::add_root('non_existing_folder');
}
function test_set_root_relative() {
$folder = PQUERY_ROOT.'test/';
$folder_relative = 'test/';
__tpl::set_root($folder_relative);
$this->assertEqual(array($folder), __tpl::$include_path, 'folder was not set as only include path');
}
function test_set_root_absolute() {
$folder = PQUERY_ROOT.'test/';
__tpl::set_root($folder, false);
$this->assertEqual(array($folder), __tpl::$include_path, 'folder was not set as only include path');
}
function test_constructor() {
$this->assertIsA($this->tpl, 'pQueryTemplate', 'constructor does not return pQueryTemplate object');
}
function test_open_template_file() {
$path = $this->templates_folder.$this->file;
$content = file_get_contents($path);
$this->assertEqual($this->tpl->content, $content, 'template content is not set correctly');
}
function test_non_existent_file() {
$this->expectException('pQueryException');
_tpl('non_existent_file.tpl');
}
function test_parse() {
$expected_content = file_get_contents($this->templates_folder.'expect_parse.txt');
$test1 = $this->tpl->data->add('test1', array('var' => 'some-variable'));
$this->tpl->data->add('test1', array('var' => 'some-other-variable'));
$test1->add('test2');
$this->tpl->data->add('test3');
$this->assertEqual($this->tpl->parse(), $expected_content, 'parsed templated does not match expected content');
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment