mirror of
https://github.com/Mibew/handlebars.php.git
synced 2025-05-05 03:13:07 +03:00
add another test
This commit is contained in:
parent
939c58bbee
commit
9c91ea7d64
@ -1,3 +1,6 @@
|
||||
inherit: true
|
||||
filter:
|
||||
paths: [src/*]
|
||||
excluded_paths: [tests/*]
|
||||
tools:
|
||||
php_code_coverage: true
|
@ -278,12 +278,12 @@ class Context
|
||||
/**
|
||||
* Splits variable name to chunks.
|
||||
*
|
||||
* @param string $variable_name Fully qualified name of a variable.
|
||||
* @param string $variableName Fully qualified name of a variable.
|
||||
*
|
||||
* @throws \InvalidArgumentException if variable name is invalid.
|
||||
* @return array
|
||||
*/
|
||||
private function _splitVariableName($variable_name)
|
||||
private function _splitVariableName($variableName)
|
||||
{
|
||||
$bad_chars = preg_quote(self::NOT_VALID_NAME_CHARS, '/');
|
||||
$bad_seg_chars = preg_quote(self::NOT_VALID_SEGMENT_NAME_CHARS, '/');
|
||||
@ -292,11 +292,11 @@ class Context
|
||||
$check_pattern = "/^((" . $name_pattern . ")\.)*(" . $name_pattern . ")\.?$/";
|
||||
$get_pattern = "/(?:" . $name_pattern . ")/";
|
||||
|
||||
if (!preg_match($check_pattern, $variable_name)) {
|
||||
if (!preg_match($check_pattern, $variableName)) {
|
||||
throw new \InvalidArgumentException('variable name is invalid');
|
||||
}
|
||||
|
||||
preg_match_all($get_pattern, $variable_name, $matches);
|
||||
preg_match_all($get_pattern, $variableName, $matches);
|
||||
|
||||
$chunks = array();
|
||||
foreach ($matches[0] as $chunk) {
|
||||
|
@ -24,6 +24,7 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
\Handlebars\Autoloader::register();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test handlebars autoloader
|
||||
*
|
||||
@ -265,10 +266,14 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals('Test helper is called with a b c', $engine->render('{{#test2 a b c}}', array()));
|
||||
$this->assertEquals('Test helper is called with a b c', $engine->render('{{test2 a b c}}', array()));
|
||||
|
||||
$engine->addHelper('renderme', function() {return new \Handlebars\String("{{test}}");});
|
||||
$engine->addHelper('renderme', function () {
|
||||
return new \Handlebars\String("{{test}}");
|
||||
});
|
||||
$this->assertEquals('Test helper is called', $engine->render('{{#renderme}}', array()));
|
||||
|
||||
$engine->addHelper('dontrenderme', function() {return "{{test}}";});
|
||||
$engine->addHelper('dontrenderme', function () {
|
||||
return "{{test}}";
|
||||
});
|
||||
$this->assertEquals('{{test}}', $engine->render('{{#dontrenderme}}', array()));
|
||||
|
||||
$engine->addHelper('markupHelper', function () {
|
||||
@ -334,11 +339,13 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
public function testHelpersClass()
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers();
|
||||
$helpers->add('test', function(){});
|
||||
$helpers->add('test', function () {
|
||||
});
|
||||
$this->assertTrue($helpers->has('test'));
|
||||
$this->assertTrue(isset($helpers->test));
|
||||
$this->assertFalse($helpers->isEmpty());
|
||||
$helpers->test2 = function(){};
|
||||
$helpers->test2 = function () {
|
||||
};
|
||||
$this->assertTrue($helpers->has('test2'));
|
||||
$this->assertTrue(isset($helpers->test2));
|
||||
$this->assertFalse($helpers->isEmpty());
|
||||
@ -450,6 +457,7 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
$engine->setLoader($loader);
|
||||
$this->assertEquals('test', $engine->render('loader', array()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test file system loader
|
||||
*/
|
||||
@ -473,6 +481,7 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
/**
|
||||
* Test file system loader
|
||||
*
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testFileSystemLoaderNotFound()
|
||||
@ -482,8 +491,10 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
$engine->setLoader($loader);
|
||||
$engine->render('invalid_file', array());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test file system loader
|
||||
*
|
||||
* @expectedException \RuntimeException
|
||||
*/
|
||||
public function testFileSystemLoaderInvalidFolder()
|
||||
@ -611,7 +622,8 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
/**
|
||||
* Test for proper handling of the length property
|
||||
**/
|
||||
public function testArrayLengthEmulation(){
|
||||
public function testArrayLengthEmulation()
|
||||
{
|
||||
|
||||
$data = array("numbers" => array(1, 2, 3, 4),
|
||||
"object" => (object)array("prop1" => "val1", "prop2" => "val2"),
|
||||
@ -626,7 +638,8 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals($context->get("object_with_length_property.length"), "15cm");
|
||||
}
|
||||
|
||||
public function argumentParserProvider(){
|
||||
public function argumentParserProvider()
|
||||
{
|
||||
return array(
|
||||
array('arg1 arg2', array("arg1", "arg2")),
|
||||
array('"arg1 arg2"', array("arg1 arg2")),
|
||||
@ -650,23 +663,28 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testArgumentParser($arg_string, $expected_array){
|
||||
public function testArgumentParser($arg_string, $expected_array)
|
||||
{
|
||||
$engine = new \Handlebars\Handlebars();
|
||||
$template = new \Handlebars\Template($engine, null, null);
|
||||
// get the string version of the arguments array
|
||||
$args = $template->parseArguments($arg_string);
|
||||
$args = array_map(function($a){ return (string)$a; }, $args);
|
||||
$args = array_map(function ($a) {
|
||||
return (string)$a;
|
||||
}, $args);
|
||||
$this->assertEquals($args, $expected_array);
|
||||
|
||||
}
|
||||
|
||||
public function stringLiteralInCustomHelperProvider(){
|
||||
public function stringLiteralInCustomHelperProvider()
|
||||
{
|
||||
return array(
|
||||
array('{{#test2 arg1 "Argument 2"}}', array("arg1" => "Argument 1"), "Argument 1:Argument 2"),
|
||||
array('{{#test2 "Argument 1" "Argument 2"}}', array("arg1" => "Argument 1"), "Argument 1:Argument 2"),
|
||||
array('{{#test2 "Argument 1" arg2}}', array("arg2" => "Argument 2"), "Argument 1:Argument 2")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test String literals in the context of a helper
|
||||
*
|
||||
@ -678,23 +696,52 @@ class HandlebarsTest extends \PHPUnit_Framework_TestCase
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testStringLiteralInCustomHelper($template, $data, $results){
|
||||
public function testStringLiteralInCustomHelper($template, $data, $results)
|
||||
{
|
||||
$engine = new \Handlebars\Handlebars();
|
||||
$engine->addHelper('test2', function ($template, $context, $args) {
|
||||
$args = $template->parseArguments($args);
|
||||
|
||||
$args = array_map(function ($a) use ($context) {return $context->get($a);}, $args);
|
||||
$args = array_map(function ($a) use ($context) {
|
||||
return $context->get($a);
|
||||
}, $args);
|
||||
|
||||
return implode(':', $args);
|
||||
});
|
||||
$res = $engine->render($template, $data);
|
||||
$this->assertEquals($res, $results);
|
||||
}
|
||||
|
||||
public function testString(){
|
||||
public function testString()
|
||||
{
|
||||
$string = new \Handlebars\String("Hello World");
|
||||
$this->assertEquals((string)$string, "Hello World");
|
||||
}
|
||||
|
||||
public function testInvalidNames()
|
||||
{
|
||||
$loader = new \Handlebars\Loader\StringLoader();
|
||||
$engine = new \Handlebars\Handlebars(
|
||||
array(
|
||||
'loader' => $loader,
|
||||
)
|
||||
);
|
||||
$all = \Handlebars\Context::NOT_VALID_NAME_CHARS;
|
||||
|
||||
for ($i = 0; $i < strlen($all); $i++) {
|
||||
// Dot in string is valid, its an exception here
|
||||
if ($all{$i} === '.') {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
$name = 'var' . $all{$i} . 'var';
|
||||
$engine->render('{{' . $name . '}}', array($name => 'VALUE'));
|
||||
throw new Exception("Accept the $name :/");
|
||||
} catch (Exception $e) {
|
||||
$this->assertInstanceOf("InvalidArgumentException", $e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user