Followup to r80435: Forgot the svn add
authorX! <soxred93@users.mediawiki.org>
Mon, 17 Jan 2011 16:43:12 +0000 (16:43 +0000)
committerX! <soxred93@users.mediawiki.org>
Mon, 17 Jan 2011 16:43:12 +0000 (16:43 +0000)
tests/phpunit/includes/HooksTest.php [new file with mode: 0644]

diff --git a/tests/phpunit/includes/HooksTest.php b/tests/phpunit/includes/HooksTest.php
new file mode 100644 (file)
index 0000000..ee8a3fc
--- /dev/null
@@ -0,0 +1,130 @@
+<?php
+
+
+class HooksTest extends MediaWikiTestCase {
+       
+       
+       public function testOldStyleHooks() {
+               
+               $foo = 'Foo';
+               $bar = 'Bar';
+               
+               $i = new NothingClass();
+               
+               global $wgHooks;
+               
+               $wgHooks['MediaWikiHooksTest001'][] = array( $i, 'someNonStatic' );
+               
+               wfRunHooks( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+               
+               $this->assertEquals( 'fOO', $foo, 'Standard method' );
+               $foo = 'Foo';
+               
+               
+               $wgHooks['MediaWikiHooksTest001'][] = $i;
+               
+               wfRunHooks( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+               
+               $this->assertEquals( 'foo', $foo, 'onEventName style' );
+               $foo = 'Foo';
+               
+               
+               $wgHooks['MediaWikiHooksTest001'][] = array( $i, 'someNonStaticWithData', 'baz' );
+               
+               wfRunHooks( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+               
+               $this->assertEquals( 'baz', $foo, 'Data included' );
+               $foo = 'Foo';
+               
+               
+               $wgHooks['MediaWikiHooksTest001'][] = array( $i, 'someStatic' );
+               
+               wfRunHooks( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+               
+               $this->assertEquals( 'bah', $foo, 'Standard static method' );
+               $foo = 'Foo';
+               
+               
+               unset( $wgHooks['MediaWikiHooksTest001'] );
+               
+       }
+       
+       public function testNewStyleHooks() {
+               
+               $foo = 'Foo';
+               $bar = 'Bar';
+               
+               $i = new NothingClass();
+               
+               
+               Hooks::register( 'MediaWikiHooksTest001', array( $i, 'someNonStatic' ) );
+               
+               Hooks::run( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+               
+               $this->assertEquals( 'fOO', $foo, 'Standard method' );
+               $foo = 'Foo';
+               
+               
+               Hooks::register( 'MediaWikiHooksTest001', $i );
+               
+               Hooks::run( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+               
+               $this->assertEquals( 'foo', $foo, 'onEventName style' );
+               $foo = 'Foo';
+               
+               
+               Hooks::register( 'MediaWikiHooksTest001', array( $i, 'someNonStaticWithData', 'baz' ) );
+               
+               Hooks::run( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+               
+               $this->assertEquals( 'baz', $foo, 'Data included' );
+               $foo = 'Foo';
+               
+               
+               Hooks::register( 'MediaWikiHooksTest001', array( $i, 'someStatic' ) );
+               
+               Hooks::run( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+               
+               $this->assertEquals( 'bah', $foo, 'Standard static method' );
+               $foo = 'Foo';
+               
+       }
+       
+}
+
+class NothingClass {
+       
+       static public function someStatic( &$foo, &$bar ) {
+               
+               $foo = 'bah';
+               
+               return true;
+               
+       }
+       
+       public function someNonStatic( &$foo, &$bar ) {
+               
+               $foo = 'fOO';
+               $bar = 'bAR';
+               
+               return true;
+               
+       }
+       
+       public function onMediaWikiHooksTest001( &$foo, &$bar ) {
+               
+               $foo = 'foo';
+               
+               return true;
+               
+       }
+       
+       public function someNonStaticWithData( $foo, &$bar ) {
+               
+               $bar = $foo;
+               
+               return true;
+               
+       }
+       
+}