Merge "Add new core tags"
[lhc/web/wiklou.git] / tests / phpunit / includes / content / WikitextContentHandlerTest.php
index 9d4abe8..77cfb92 100644 (file)
@@ -185,6 +185,13 @@ class WikitextContentHandlerTest extends MediaWikiLangTestCase {
                                '/^Created page .*Hello/'
                        ],
 
+                       [
+                               null,
+                               '',
+                               EDIT_NEW,
+                               '/^Created blank page$/'
+                       ],
+
                        [
                                'Hello there, world!',
                                '',
@@ -227,6 +234,104 @@ class WikitextContentHandlerTest extends MediaWikiLangTestCase {
                );
        }
 
+       public static function dataGetChangeTag() {
+               return [
+                       [
+                               null,
+                               '#REDIRECT [[Foo]]',
+                               0,
+                               'mw-new-redirect'
+                       ],
+
+                       [
+                               'Lorem ipsum dolor',
+                               '#REDIRECT [[Foo]]',
+                               0,
+                               'mw-new-redirect'
+                       ],
+
+                       [
+                               '#REDIRECT [[Foo]]',
+                               'Lorem ipsum dolor',
+                               0,
+                               'mw-removed-redirect'
+                       ],
+
+                       [
+                               '#REDIRECT [[Foo]]',
+                               '#REDIRECT [[Bar]]',
+                               0,
+                               'mw-changed-redirect-target'
+                       ],
+
+                       [
+                               null,
+                               'Lorem ipsum dolor',
+                               EDIT_NEW,
+                               null // mw-newpage is not defined as a tag
+                       ],
+
+                       [
+                               null,
+                               '',
+                               EDIT_NEW,
+                               null // mw-newblank is not defined as a tag
+                       ],
+
+                       [
+                               'Lorem ipsum dolor',
+                               '',
+                               0,
+                               'mw-blank'
+                       ],
+
+                       [
+                               'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
+                               eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
+                               voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
+                               clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.',
+                               'Ipsum',
+                               0,
+                               'mw-replace'
+                       ],
+
+                       [
+                               'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
+                               eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
+                               voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
+                               clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.',
+                               'Duis purus odio, rhoncus et finibus dapibus, facilisis ac urna. Pellentesque
+                               arcu, tristique nec tempus nec, suscipit vel arcu. Sed non dolor nec ligula
+                               congue tempor. Quisque pellentesque finibus orci a molestie. Nam maximus, purus
+                               euismod finibus mollis, dui ante malesuada felis, dignissim rutrum diam sapien.',
+                               0,
+                               null
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider dataGetChangeTag
+        * @covers WikitextContentHandler::getChangeTag
+        */
+       public function testGetChangeTag( $old, $new, $flags, $expected ) {
+               $this->setMwGlobals( 'wgSoftwareTags', [
+                       'mw-new-redirect' => true,
+                       'mw-removed-redirect' => true,
+                       'mw-changed-redirect-target' => true,
+                       'mw-newpage' => true,
+                       'mw-newblank' => true,
+                       'mw-blank' => true,
+                       'mw-replace' => true,
+               ] );
+               $oldContent = is_null( $old ) ? null : new WikitextContent( $old );
+               $newContent = is_null( $new ) ? null : new WikitextContent( $new );
+
+               $tag = $this->handler->getChangeTag( $oldContent, $newContent, $flags );
+
+               $this->assertSame( $expected, $tag );
+       }
+
        /**
         * @todo Text case requires database, should be done by a test class in the Database group
         */
@@ -245,15 +350,24 @@ class WikitextContentHandlerTest extends MediaWikiLangTestCase {
        */
 
        public function testDataIndexFieldsFile() {
-               $mockEngine = $this->getMock( 'SearchEngine' );
+               $mockEngine = $this->createMock( 'SearchEngine' );
                $title = Title::newFromText( 'Somefile.jpg', NS_FILE );
                $page = new WikiPage( $title );
 
+               $fileHandler = $this->getMockBuilder( FileContentHandler::class )
+                       ->disableOriginalConstructor()
+                       ->setMethods( [ 'getDataForSearchIndex' ] )
+                       ->getMock();
+
                $handler = $this->getMockBuilder( WikitextContentHandler::class )
                        ->disableOriginalConstructor()
-                       ->setMethods( [ 'getFileText' ] )
+                       ->setMethods( [ 'getFileHandler' ] )
                        ->getMock();
-               $handler->method( 'getFileText' )->will( $this->returnValue( 'This is file content' ) );
+
+               $handler->method( 'getFileHandler' )->will( $this->returnValue( $fileHandler ) );
+               $fileHandler->expects( $this->once() )
+                       ->method( 'getDataForSearchIndex' )
+                       ->will( $this->returnValue( [ 'file_text' => 'This is file content' ] ) );
 
                $data = $handler->getDataForSearchIndex( $page, new ParserOutput(), $mockEngine );
                $this->assertArrayHasKey( 'file_text', $data );