| <?php |
|
|
| require_once __DIR__.'/../Base.php'; |
|
|
| use Kanboard\Helper\HookHelper; |
|
|
| class HookHelperTest extends Base |
| { |
| public function testAttachCallable() |
| { |
| $this->container['template'] = $this |
| ->getMockBuilder('\Kanboard\Core\Template') |
| ->setConstructorArgs(array($this->container['helper'])) |
| ->setMethods(array('render')) |
| ->getMock(); |
|
|
| $this->container['template'] |
| ->expects($this->once()) |
| ->method('render') |
| ->with( |
| $this->equalTo('tpl1'), |
| $this->equalTo(array('k0' => 'v0', 'k1' => 'v1')) |
| ) |
| ->will($this->returnValue('tpl1_content')); |
|
|
| $hookHelper = new HookHelper($this->container); |
| $hookHelper->attachCallable('test', 'tpl1', function() { |
| return array( |
| 'k1' => 'v1', |
| ); |
| }); |
|
|
| $this->assertEquals('tpl1_content', $hookHelper->render('test', array('k0' => 'v0'))); |
| } |
|
|
| public function testAttachCallableWithNoResult() |
| { |
| $this->container['template'] = $this |
| ->getMockBuilder('\Kanboard\Core\Template') |
| ->setConstructorArgs(array($this->container['helper'])) |
| ->setMethods(array('render')) |
| ->getMock(); |
|
|
| $this->container['template'] |
| ->expects($this->once()) |
| ->method('render') |
| ->with( |
| $this->equalTo('tpl1'), |
| $this->equalTo(array('k0' => 'v0')) |
| ) |
| ->will($this->returnValue('tpl1_content')); |
|
|
| $hookHelper = new HookHelper($this->container); |
| $hookHelper->attachCallable('test', 'tpl1', function() { |
| }); |
|
|
| $this->assertEquals('tpl1_content', $hookHelper->render('test', array('k0' => 'v0'))); |
| } |
|
|
| public function testAttachLocalVariables() |
| { |
| $this->container['template'] = $this |
| ->getMockBuilder('\Kanboard\Core\Template') |
| ->setConstructorArgs(array($this->container['helper'])) |
| ->setMethods(array('render')) |
| ->getMock(); |
|
|
| $this->container['template'] |
| ->expects($this->once()) |
| ->method('render') |
| ->with( |
| $this->equalTo('tpl1'), |
| $this->equalTo(array('k0' => 'v0', 'k1' => 'v1')) |
| ) |
| ->will($this->returnValue('tpl1_content')); |
|
|
| $hookHelper = new HookHelper($this->container); |
| $hookHelper->attach('test', 'tpl1', array('k1' => 'v1')); |
| $this->assertEquals('tpl1_content', $hookHelper->render('test', array('k0' => 'v0'))); |
| } |
|
|
| public function testMultipleHooks() |
| { |
| $this->container['template'] = $this |
| ->getMockBuilder('\Kanboard\Core\Template') |
| ->setConstructorArgs(array($this->container['helper'])) |
| ->setMethods(array('render')) |
| ->getMock(); |
|
|
| $this->container['template'] |
| ->expects($this->any()) |
| ->method('render') |
| ->willReturnMap([ |
| ['tpl1', array(), 'tpl1_content'], |
| ['tpl2', array(), 'tpl2_content'], |
| ]); |
|
|
| $hookHelper = new HookHelper($this->container); |
| $hookHelper->attach('test', 'tpl1'); |
| $hookHelper->attach('test', 'tpl2'); |
| $this->assertEquals('tpl1_contenttpl2_content', $hookHelper->render('test')); |
| } |
|
|
| public function testAssetHooks() |
| { |
| $this->container['helper']->asset = $this |
| ->getMockBuilder('\Kanboard\Helper\AssetHelper') |
| ->setConstructorArgs(array($this->container)) |
| ->setMethods(array('css', 'js')) |
| ->getMock(); |
|
|
| $this->container['helper'] |
| ->asset |
| ->expects($this->once()) |
| ->method('css') |
| ->with( |
| $this->equalTo('skin.css') |
| ) |
| ->will($this->returnValue('<link rel="stylesheet" href="skin.css"></link>')); |
|
|
| $this->container['helper'] |
| ->asset |
| ->expects($this->once()) |
| ->method('js') |
| ->with( |
| $this->equalTo('skin.js') |
| ) |
| ->will($this->returnValue('<script src="skin.js"></script>')); |
|
|
| $hookHelper = new HookHelper($this->container); |
| $hookHelper->attach('test1', 'skin.css'); |
| $hookHelper->attach('test2', 'skin.js'); |
|
|
| $this->assertStringContainsString('<link rel="stylesheet" href="skin.css"></link>', $hookHelper->asset('css', 'test1')); |
| $this->assertStringContainsString('<script src="skin.js"></script>', $hookHelper->asset('js', 'test2')); |
| } |
| } |
|
|