| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | <?phpnamespace Elgg;class HooksRegistrationServiceTest extends \PHPUnit_Framework_TestCase {	/**	 * @var HooksRegistrationService	 */	public $mock;	public function setUp() {		parent::setUp();		$this->mock = $this->getMockForAbstractClass('\Elgg\HooksRegistrationService');	}		public function testCanRegisterHandlers() {		$f = function () {};		$this->assertTrue($this->mock->registerHandler('foo', 'bar', 'callback1'));		$this->assertTrue($this->mock->registerHandler('foo', 'bar', $f));		$this->assertTrue($this->mock->registerHandler('foo', 'baz', 'callback3', 100));		$expected = array(			'foo' => array(				'bar' => array(					500 => 'callback1',					501 => $f,				),				'baz' => array(					100 => 'callback3'				)			)		);		$this->assertSame($expected, $this->mock->getAllHandlers());		// check possibly invalid callbacks		$this->assertFalse($this->mock->registerHandler('foo', 'bar', 1234));	}		public function testCanUnregisterHandlers() {		$o = new HooksRegistrationServiceTest_invokable();		$this->mock->registerHandler('foo', 'bar', 'callback1');		$this->mock->registerHandler('foo', 'bar', 'callback2', 100);		$this->mock->registerHandler('foo', 'bar', 'callback2', 150);		$this->mock->registerHandler('foo', 'bar', [$o, '__invoke'], 300);		$this->mock->registerHandler('foo', 'bar', [$o, '__invoke'], 300);		$this->mock->registerHandler('foo', 'bar', [$o, '__invoke'], 300);		$this->assertTrue($this->mock->unregisterHandler(			'foo', 'bar', 'callback2'));		$this->assertTrue($this->mock->unregisterHandler(			'foo', 'bar', HooksRegistrationServiceTest_invokable::KLASS . '::__invoke'));		$this->assertTrue($this->mock->unregisterHandler(			'foo', 'bar', [HooksRegistrationServiceTest_invokable::KLASS, '__invoke']));		$this->assertTrue($this->mock->unregisterHandler(			'foo', 'bar', [$o, '__invoke']));		$expected = array(			'foo' => array(				'bar' => array(					// only one removed					150 => 'callback2',					500 => 'callback1',				)			)		);		$this->assertSame($expected, $this->mock->getAllHandlers());		// check unregistering things that aren't registered		$this->assertFalse($this->mock->unregisterHandler('foo', 'bar', 'not_valid'));	}	public function testOnlyOneHandlerUnregistered() {		$this->mock->registerHandler('foo', 'bar', 'callback');		$this->mock->registerHandler('foo', 'bar', 'callback');		$this->assertTrue($this->mock->unregisterHandler('foo', 'bar', 'callback'));		$this->assertSame([501 => 'callback'], $this->mock->getAllHandlers()['foo']['bar']);	}	public function testGetOrderedHandlers() {		$this->mock->registerHandler('foo', 'bar', 'callback1');		$this->mock->registerHandler('foo', 'bar', 'callback2');		$this->mock->registerHandler('foo', 'baz', 'callback3', 100);		$expected_foo_bar = array(			'callback1',			'callback2'		);		$expected_foo_baz = array(			'callback3'		);		$this->assertSame($expected_foo_bar, $this->mock->getOrderedHandlers('foo', 'bar'));		$this->assertSame($expected_foo_baz, $this->mock->getOrderedHandlers('foo', 'baz'));	}}class HooksRegistrationServiceTest_invokable {	const KLASS = __CLASS__;	function __invoke() {}}
 |