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