| | <?php |
| |
|
| | require_once __DIR__.'/../../Base.php'; |
| |
|
| | use Kanboard\Core\Plugin\Hook; |
| |
|
| | class HookTest extends Base |
| | { |
| | public function testGetListeners() |
| | { |
| | $hook = new Hook; |
| | $this->assertEmpty($hook->getListeners('myhook')); |
| |
|
| | $hook->on('myhook', 'A'); |
| | $hook->on('myhook', 'B'); |
| |
|
| | $this->assertEquals(array('A', 'B'), $hook->getListeners('myhook')); |
| | } |
| |
|
| | public function testExists() |
| | { |
| | $hook = new Hook; |
| | $this->assertFalse($hook->exists('myhook')); |
| |
|
| | $hook->on('myhook', 'A'); |
| |
|
| | $this->assertTrue($hook->exists('myhook')); |
| | } |
| |
|
| | public function testMergeWithNoBinding() |
| | { |
| | $hook = new Hook; |
| | $values = array('A', 'B'); |
| |
|
| | $result = $hook->merge('myhook', $values, array('p' => 'c')); |
| | $this->assertEquals($values, $result); |
| | } |
| |
|
| | public function testMergeWithBindings() |
| | { |
| | $hook = new Hook; |
| | $values = array('A', 'B'); |
| | $expected = array('A', 'B', 'c', 'D'); |
| |
|
| | $hook->on('myhook', function ($p) { |
| | return array($p); |
| | }); |
| |
|
| | $hook->on('myhook', function ($p) { |
| | return array('D'); |
| | }); |
| |
|
| | $result = $hook->merge('myhook', $values, array('p' => 'c')); |
| | $this->assertEquals($expected, $result); |
| | $this->assertEquals($expected, $values); |
| | } |
| |
|
| | public function testMergeWithBindingButReturningBadData() |
| | { |
| | $hook = new Hook; |
| | $values = array('A', 'B'); |
| | $expected = array('A', 'B'); |
| |
|
| | $hook->on('myhook', function () { |
| | return 'string'; |
| | }); |
| |
|
| | $result = $hook->merge('myhook', $values); |
| | $this->assertEquals($expected, $result); |
| | $this->assertEquals($expected, $values); |
| | } |
| |
|
| | public function testFirstWithNoBinding() |
| | { |
| | $hook = new Hook; |
| |
|
| | $result = $hook->first('myhook', array('p' => 2)); |
| | $this->assertEquals(null, $result); |
| | } |
| |
|
| | public function testFirstWithMultipleBindings() |
| | { |
| | $hook = new Hook; |
| |
|
| | $hook->on('myhook', function ($p) { |
| | return $p + 1; |
| | }); |
| |
|
| | $hook->on('myhook', function ($p) { |
| | return $p; |
| | }); |
| |
|
| | $result = $hook->first('myhook', array('p' => 3)); |
| | $this->assertEquals(4, $result); |
| | } |
| |
|
| | public function testHookWithReference() |
| | { |
| | $hook = new Hook(); |
| |
|
| | $hook->on('myhook', function (&$p) { |
| | $p = 2; |
| | }); |
| |
|
| | $param = 123; |
| | $result = $hook->reference('myhook', $param); |
| | $this->assertSame(2, $result); |
| | $this->assertSame(2, $param); |
| | } |
| | } |
| |
|