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

Added unit tests for 'template' plugin.

parent b3fc6f02
...@@ -115,7 +115,7 @@ class pQuery { ...@@ -115,7 +115,7 @@ class pQuery {
*/ */
static function error($error /* , $arg1, $arg2... */) { static function error($error /* , $arg1, $arg2... */) {
$args = func_get_args(); $args = func_get_args();
$error = nl2br(call_user_func_array('sprintf', $args)); $error = call_user_func_array('sprintf', $args);
throw new pQueryException($error); throw new pQueryException($error);
} }
...@@ -251,6 +251,21 @@ class pQuery { ...@@ -251,6 +251,21 @@ class pQuery {
if( in_array($name, (array)$class_name::$variable_alias) ) if( in_array($name, (array)$class_name::$variable_alias) )
$this->variable = $value; $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;
}
} }
/** /**
...@@ -299,9 +314,14 @@ function _p($variable, $plugin=null) { ...@@ -299,9 +314,14 @@ function _p($variable, $plugin=null) {
return new $class_name($variable); return new $class_name($variable);
} }
/** /*
* Set an alias for the bas class consistent with plugin aliases. * Set an alias for the bas class consistent with plugin aliases.
*/ */
class_alias('pQuery', '__p'); 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) { ...@@ -248,8 +248,14 @@ function _tpl($path) {
return pQuery::create('tpl', $path); return pQuery::create('tpl', $path);
} }
/*
* Add plugin to pQuery
*/
__p::extend('pQueryTemplate', 'tpl'); __p::extend('pQueryTemplate', 'tpl');
/*
* Set initial root to pQuery root folder
*/
__tpl::set_root(''); __tpl::set_root('');
?> ?>
\ No newline at end of file
...@@ -28,9 +28,9 @@ while( !$a->is_empty() ) { ...@@ -28,9 +28,9 @@ while( !$a->is_empty() ) {
$results = $sql->fetch_all('object'); $results = $sql->fetch_all('object');
$results = _arr($results); $results = _arr($results);
debug($results); debug($results);*/
__tpl::set_root('templates', false); /*__tpl::set_root('templates', false);
$tpl = _tpl('test.tpl'); $tpl = _tpl('test.tpl');
$test1 = $tpl->data->add('test1', array('var' => 'some-variable')); $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 @@ ...@@ -3,12 +3,75 @@
__p::load_plugin('template'); __p::load_plugin('template');
class pQueryTemplateTest extends UnitTestCase { class pQueryTemplateTest extends UnitTestCase {
const TEMPLATES_FOLDER = 'templates/';
var $templates_folder;
var $file;
var $tpl;
function __construct() { function __construct() {
parent::__construct('pQuery template plugin'); 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