mirror of
				https://github.com/Mibew/handlebars.php-helpers.git
				synced 2025-10-31 18:41:09 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*
 | |
|  * This file is part of Handlebars.php Helpers Set
 | |
|  *
 | |
|  * (c) Dmitriy Simushev <simushevds@gmail.com>
 | |
|  *
 | |
|  * For the full copyright and license information, please view the LICENSE
 | |
|  * file that was distributed with this source code.
 | |
|  */
 | |
| 
 | |
| namespace JustBlackBird\HandlebarsHelpers\Tests\Layout;
 | |
| 
 | |
| use JustBlackBird\HandlebarsHelpers\Layout\BlockHelper;
 | |
| use JustBlackBird\HandlebarsHelpers\Layout\BlockStorage;
 | |
| use JustBlackBird\HandlebarsHelpers\Layout\ExtendsHelper;
 | |
| use JustBlackBird\HandlebarsHelpers\Layout\IfOverriddenHelper;
 | |
| use JustBlackBird\HandlebarsHelpers\Layout\OverrideHelper;
 | |
| use JustBlackBird\HandlebarsHelpers\Layout\UnlessOverriddenHelper;
 | |
| 
 | |
| /**
 | |
|  * Test class for all layout helpers.
 | |
|  *
 | |
|  * Layout helpers must work together thus combined tests should be used.
 | |
|  *
 | |
|  * @author Dmitriy Simushev <simushevds@gmail.com>
 | |
|  */
 | |
| class IntegrationTest extends \PHPUnit_Framework_TestCase
 | |
| {
 | |
|     /**
 | |
|      * Tests how inheritance helpers works together.
 | |
|      */
 | |
|     public function testInheritance()
 | |
|     {
 | |
|         $storage = new BlockStorage();
 | |
|         $helpers = new \Handlebars\Helpers(array(
 | |
|             'block' => new BlockHelper($storage),
 | |
|             'extends' => new ExtendsHelper($storage),
 | |
|             'override' => new OverrideHelper($storage),
 | |
|         ));
 | |
|         $engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
 | |
| 
 | |
|         // Test simple inheritance
 | |
|         $engine->setLoader(new \Handlebars\Loader\ArrayLoader(array(
 | |
|             'parent' => '{{#block "name"}}parent{{/block}} template',
 | |
|             'child' => '{{#extends "parent"}}{{#override "name"}}child{{/override}}{{/extends}}',
 | |
|             'grandchild' => '{{#extends "child"}}{{#override "name"}}grandchild{{/override}}{{/extends}}',
 | |
|         )));
 | |
|         $this->assertEquals($engine->render('parent', array()), 'parent template');
 | |
|         $this->assertEquals($engine->render('child', array()), 'child template');
 | |
|         $this->assertEquals($engine->render('grandchild', array()), 'grandchild template');
 | |
| 
 | |
|         // Test inheritance with nested blocks
 | |
|         $engine->setLoader(new \Handlebars\Loader\ArrayLoader(array(
 | |
|             'parent' => '{{#block "title"}}{{#block "name"}}parent{{/block}} template{{/block}}',
 | |
|             'child' => '{{#extends "parent"}}{{#override "name"}}child{{/override}}{{/extends}}',
 | |
|             'newbie' => '{{#extends "parent"}}{{#override "title"}}Newbie!{{/override}}{{/extends}}',
 | |
|         )));
 | |
|         $this->assertEquals($engine->render('parent', array()), 'parent template');
 | |
|         $this->assertEquals($engine->render('child', array()), 'child template');
 | |
|         $this->assertEquals($engine->render('newbie', array()), 'Newbie!');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Tests that conditions related with inheritance works as expected.
 | |
|      */
 | |
|     public function testConditions()
 | |
|     {
 | |
|         $storage = new BlockStorage();
 | |
|         $helpers = new \Handlebars\Helpers(array(
 | |
|             'block' => new BlockHelper($storage),
 | |
|             'extends' => new ExtendsHelper($storage),
 | |
|             'override' => new OverrideHelper($storage),
 | |
|             'ifOverridden' => new IfOverriddenHelper($storage),
 | |
|             'unlessOverridden' => new UnlessOverriddenHelper($storage),
 | |
|         ));
 | |
|         $engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
 | |
| 
 | |
|         // Test "ifOverridden" helper
 | |
|         $engine->setLoader(new \Handlebars\Loader\ArrayLoader(array(
 | |
|             'parent' => '{{#block "name"}}{{/block}}{{#ifOverridden "name"}}true{{else}}false{{/ifOverridden}}',
 | |
|             'child' => '{{#extends "parent"}}{{#override "name"}}{{/override}}{{/extends}}',
 | |
|             'another_child' => '{{#extends "parent"}}{{/extends}}',
 | |
|         )));
 | |
|         $this->assertEquals($engine->render('parent', array()), 'false');
 | |
|         $this->assertEquals($engine->render('child', array()), 'true');
 | |
|         $this->assertEquals($engine->render('another_child', array()), 'false');
 | |
| 
 | |
|         // Test "unlessOverridden" helper
 | |
|         $engine->setLoader(new \Handlebars\Loader\ArrayLoader(array(
 | |
|             'parent' => '{{#block "name"}}{{/block}}{{#unlessOverridden "name"}}false{{else}}true{{/unlessOverridden}}',
 | |
|             'child' => '{{#extends "parent"}}{{#override "name"}}{{/override}}{{/extends}}',
 | |
|             'another_child' => '{{#extends "parent"}}{{/extends}}',
 | |
|         )));
 | |
|         $this->assertEquals($engine->render('parent', array()), 'false');
 | |
|         $this->assertEquals($engine->render('child', array()), 'true');
 | |
|         $this->assertEquals($engine->render('another_child', array()), 'false');
 | |
|     }
 | |
| }
 |