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->at(0)) ->method('render') ->with( $this->equalTo('tpl1'), $this->equalTo(array()) ) ->will($this->returnValue('tpl1_content')); $this->container['template'] ->expects($this->at(1)) ->method('render') ->with( $this->equalTo('tpl2'), $this->equalTo(array()) ) ->will($this->returnValue('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->at(0)) ->method('css') ->with( $this->equalTo('skin.css') ) ->will($this->returnValue('')); $this->container['helper'] ->asset ->expects($this->at(1)) ->method('js') ->with( $this->equalTo('skin.js') ) ->will($this->returnValue('')); $hookHelper = new HookHelper($this->container); $hookHelper->attach('test1', 'skin.css'); $hookHelper->attach('test2', 'skin.js'); $this->assertContains('', $hookHelper->asset('css', 'test1')); $this->assertContains('', $hookHelper->asset('js', 'test2')); } }