]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - tests/phpunit/includes/logging/MoveLogFormatterTest.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / tests / phpunit / includes / logging / MoveLogFormatterTest.php
diff --git a/tests/phpunit/includes/logging/MoveLogFormatterTest.php b/tests/phpunit/includes/logging/MoveLogFormatterTest.php
new file mode 100644 (file)
index 0000000..3433a6a
--- /dev/null
@@ -0,0 +1,270 @@
+<?php
+
+class MoveLogFormatterTest extends LogFormatterTestCase {
+
+       /**
+        * Provide different rows from the logging table to test
+        * for backward compatibility.
+        * Do not change the existing data, just add a new database row
+        */
+       public static function provideMoveLogDatabaseRows() {
+               return [
+                       // Current format - with redirect
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move',
+                                       'comment' => 'move comment with redirect',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               '4::target' => 'NewPage',
+                                               '5::noredir' => '0',
+                                       ],
+                               ],
+                               [
+                                       'text' => 'User moved page OldPage to NewPage',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => false,
+                                       ],
+                               ],
+                       ],
+
+                       // Current format - without redirect
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move',
+                                       'comment' => 'move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               '4::target' => 'NewPage',
+                                               '5::noredir' => '1',
+                                       ],
+                               ],
+                               [
+                                       'text' => 'User moved page OldPage to NewPage without leaving a redirect',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => true,
+                                       ],
+                               ],
+                       ],
+
+                       // legacy format - with redirect
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move',
+                                       'comment' => 'move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               'NewPage',
+                                               '',
+                                       ],
+                               ],
+                               [
+                                       'legacy' => true,
+                                       'text' => 'User moved page OldPage to NewPage',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => false,
+                                       ],
+                               ],
+                       ],
+
+                       // legacy format - without redirect
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move',
+                                       'comment' => 'move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               'NewPage',
+                                               '1',
+                                       ],
+                               ],
+                               [
+                                       'legacy' => true,
+                                       'text' => 'User moved page OldPage to NewPage without leaving a redirect',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => true,
+                                       ],
+                               ],
+                       ],
+
+                       // old format without flag for redirect suppression
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move',
+                                       'comment' => 'move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               'NewPage',
+                                       ],
+                               ],
+                               [
+                                       'legacy' => true,
+                                       'text' => 'User moved page OldPage to NewPage',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => false,
+                                       ],
+                               ],
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideMoveLogDatabaseRows
+        */
+       public function testMoveLogDatabaseRows( $row, $extra ) {
+               $this->doTestLogFormatter( $row, $extra );
+       }
+
+       /**
+        * Provide different rows from the logging table to test
+        * for backward compatibility.
+        * Do not change the existing data, just add a new database row
+        */
+       public static function provideMoveRedirLogDatabaseRows() {
+               return [
+                       // Current format - with redirect
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move_redir',
+                                       'comment' => 'move comment with redirect',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               '4::target' => 'NewPage',
+                                               '5::noredir' => '0',
+                                       ],
+                               ],
+                               [
+                                       'text' => 'User moved page OldPage to NewPage over redirect',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => false,
+                                       ],
+                               ],
+                       ],
+
+                       // Current format - without redirect
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move_redir',
+                                       'comment' => 'move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               '4::target' => 'NewPage',
+                                               '5::noredir' => '1',
+                                       ],
+                               ],
+                               [
+                                       'text' => 'User moved page OldPage to NewPage over a redirect without leaving a redirect',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => true,
+                                       ],
+                               ],
+                       ],
+
+                       // legacy format - with redirect
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move_redir',
+                                       'comment' => 'move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               'NewPage',
+                                               '',
+                                       ],
+                               ],
+                               [
+                                       'legacy' => true,
+                                       'text' => 'User moved page OldPage to NewPage over redirect',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => false,
+                                       ],
+                               ],
+                       ],
+
+                       // legacy format - without redirect
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move_redir',
+                                       'comment' => 'move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               'NewPage',
+                                               '1',
+                                       ],
+                               ],
+                               [
+                                       'legacy' => true,
+                                       'text' => 'User moved page OldPage to NewPage over a redirect without leaving a redirect',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => true,
+                                       ],
+                               ],
+                       ],
+
+                       // old format without flag for redirect suppression
+                       [
+                               [
+                                       'type' => 'move',
+                                       'action' => 'move_redir',
+                                       'comment' => 'move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'OldPage',
+                                       'params' => [
+                                               'NewPage',
+                                       ],
+                               ],
+                               [
+                                       'legacy' => true,
+                                       'text' => 'User moved page OldPage to NewPage over redirect',
+                                       'api' => [
+                                               'target_ns' => 0,
+                                               'target_title' => 'NewPage',
+                                               'suppressredirect' => false,
+                                       ],
+                               ],
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideMoveRedirLogDatabaseRows
+        */
+       public function testMoveRedirLogDatabaseRows( $row, $extra ) {
+               $this->doTestLogFormatter( $row, $extra );
+       }
+}