]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - tests/phpunit/includes/SampleTest.php
MediaWiki 1.30.2-scripts
[autoinstalls/mediawiki.git] / tests / phpunit / includes / SampleTest.php
1 <?php
2
3 class TestSample extends MediaWikiLangTestCase {
4
5         /**
6          * Anything that needs to happen before your tests should go here.
7          */
8         protected function setUp() {
9                 // Be sure to do call the parent setup and teardown functions.
10                 // This makes sure that all the various cleanup and restorations
11                 // happen as they should (including the restoration for setMwGlobals).
12                 parent::setUp();
13
14                 // This sets the globals and will restore them automatically
15                 // after each test.
16                 $this->setMwGlobals( [
17                         'wgContLang' => Language::factory( 'en' ),
18                         'wgLanguageCode' => 'en',
19                         'wgCapitalLinks' => true,
20                 ] );
21         }
22
23         /**
24          * Anything cleanup you need to do should go here.
25          */
26         protected function tearDown() {
27                 parent::tearDown();
28         }
29
30         /**
31          * Name tests so that PHPUnit can turn them into sentences when
32          * they run.  While MediaWiki isn't strictly an Agile Programming
33          * project, you are encouraged to use the naming described under
34          * "Agile Documentation" at
35          * https://www.phpunit.de/manual/3.4/en/other-uses-for-tests.html
36          */
37         public function testTitleObjectStringConversion() {
38                 $title = Title::newFromText( "text" );
39                 $this->assertInstanceOf( 'Title', $title, "Title creation" );
40                 $this->assertEquals( "Text", $title, "Automatic string conversion" );
41
42                 $title = Title::newFromText( "text", NS_MEDIA );
43                 $this->assertEquals( "Media:Text", $title, "Title creation with namespace" );
44         }
45
46         /**
47          * If you want to run a the same test with a variety of data, use a data provider.
48          * see: https://www.phpunit.de/manual/3.4/en/writing-tests-for-phpunit.html
49          */
50         public static function provideTitles() {
51                 return [
52                         [ 'Text', NS_MEDIA, 'Media:Text' ],
53                         [ 'Text', null, 'Text' ],
54                         [ 'text', null, 'Text' ],
55                         [ 'Text', NS_USER, 'User:Text' ],
56                         [ 'Photo.jpg', NS_FILE, 'File:Photo.jpg' ]
57                 ];
58         }
59
60         // @codingStandardsIgnoreStart Generic.Files.LineLength
61         /**
62          * @dataProvider provideTitles
63          * See https://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.dataProvider
64          */
65         // @codingStandardsIgnoreEnd
66         public function testCreateBasicListOfTitles( $titleName, $ns, $text ) {
67                 $title = Title::newFromText( $titleName, $ns );
68                 $this->assertEquals( $text, "$title", "see if '$titleName' matches '$text'" );
69         }
70
71         public function testSetUpMainPageTitleForNextTest() {
72                 $title = Title::newMainPage();
73                 $this->assertEquals( "Main Page", "$title", "Test initial creation of a title" );
74
75                 return $title;
76         }
77
78         /**
79          * Instead of putting a bunch of tests in a single test method,
80          * you should put only one or two tests in each test method.  This
81          * way, the test method names can remain descriptive.
82          *
83          * If you want to make tests depend on data created in another
84          * method, you can create dependencies feed whatever you return
85          * from the dependant method (e.g. testInitialCreation in this
86          * example) as arguments to the next method (e.g. $title in
87          * testTitleDepends is whatever testInitialCreatiion returned.)
88          */
89
90         /**
91          * @depends testSetUpMainPageTitleForNextTest
92          * See https://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.depends
93          */
94         public function testCheckMainPageTitleIsConsideredLocal( $title ) {
95                 $this->assertTrue( $title->isLocal() );
96         }
97
98         // @codingStandardsIgnoreStart Generic.Files.LineLength
99         /**
100          * @expectedException InvalidArgumentException
101          * See https://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.expectedException
102          */
103         // @codingStandardsIgnoreEnd
104         public function testTitleObjectFromObject() {
105                 $title = Title::newFromText( Title::newFromText( "test" ) );
106                 $this->assertEquals( "Test", $title->isLocal() );
107         }
108 }