Follow up r75245.
[lhc/web/wiklou.git] / maintenance / tests / phpunit / includes / SampleTest.php
index 905ff79..59857d9 100644 (file)
@@ -2,10 +2,29 @@
 
 class TestSample extends PHPUnit_Framework_TestCase {
 
+       /**
+        * Anything that needs to happen before your tests should go here.
+        */
        function setUp() {
+               global $wgContLang;
+               /* For example, we need to set $wgContLang for creating a new Title */
+               $wgContLang = Language::factory( 'en' );
        }
 
-       function testEqual() {
+       /**
+        * Anything cleanup you need to do should go here.
+        */
+       function tearDown() {
+       }
+
+       /**
+        * Name tests so that PHPUnit can turn them into sentances when
+        * they run.  While MediaWiki isn't strictly an Agile Programming
+        * project, you are encouraged to use the naming described under
+        * "Agile Documentation" at
+        * http://www.phpunit.de/manual/3.4/en/other-uses-for-tests.html
+        */
+       function testTitleObjectStringConversion() {
                $title = Title::newFromText("text");
                $this->assertEquals("Text", $title->__toString(), "Title creation");
                $this->assertEquals("Text", "Text", "Automatic string conversion");
@@ -16,13 +35,61 @@ class TestSample extends PHPUnit_Framework_TestCase {
        }
 
        /**
-        * @expectedException MWException object
+        * If you want to run a the same test with a variety of data. use a data provider.
+        * see: http://www.phpunit.de/manual/3.4/en/writing-tests-for-phpunit.html
+        */
+       public function provideTitles() {
+               return array(
+                       array( 'Text', NS_MEDIA, 'Media:Text' ),
+                       array( 'Text', null, 'Text' ),
+                       array( 'text', null, 'Text' ),
+                       array( 'Text', NS_USER, 'User:Text' ),
+                       array( 'Text', NS_USER, 'Blah' )
+               );
+       }
+
+       /**
+        * @dataProvider provideTitles
+        * See http://www.phpunit.de/manual/3.4/en/appendixes.annotations.html#appendixes.annotations.dataProvider
+        */
+       public function testCreateBasicListOfTitles($titleName, $ns, $text) {
+               $title = Title::newFromText($titleName, $ns);
+               $this->assertEquals($text, "$title", "see if '$titleName' matches '$text'");
+       }
+
+       public function testSetUpMainPageTitleForNextTest() {
+               $title = Title::newMainPage();
+               $this->assertEquals("Main Page", "$title", "Test initial creation of a title");
+
+               return $title;
+       }
+
+       /**
+        * Instead of putting a bunch of tests in a single test method,
+        * you should put only one or two tests in each test method.  This
+        * way, the test method names can remain descriptive.
         *
-        * Above comment tells PHPUnit to expect an exception of the
-        * MWException class containing the string "object" in the
-        * message.
+        * If you want to make tests depend on data created in another
+        * method, you can create dependencies feed whatever you return
+        * from the dependant method (e.g. testInitialCreation in this
+        * example) as arguments to the next method (e.g. $title in
+        * testTitleDepends is whatever testInitialCreatiion returned.)
+        */
+       /**
+        * @depends testSetUpMainPageTitleForNextTest
+        * See http://www.phpunit.de/manual/3.4/en/appendixes.annotations.html#appendixes.annotations.depends
         */
-       function testException() {
+       public function testCheckMainPageTitleIsConsideredLocal( $title ) {
+               $this->assertTrue( $title->isLocal() );
+       }
+
+       /**
+        * @expectedException MWException object
+        * See http://www.phpunit.de/manual/3.4/en/appendixes.annotations.html#appendixes.annotations.expectedException
+        */
+       function testTitleObjectFromObject() {
                $title = Title::newFromText(new Title("test"));
+               $this->assertEquals( "Test", $title->isLocal() );
        }
-}
+  }
+