|
|
<?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')); |
|
|
} |
|
|
} |
|
|
|