Fix php code style
[lhc/web/wiklou.git] / tests / phpunit / includes / deferred / DeferredUpdatesTest.php
index 736f6e8..2c199bc 100644 (file)
@@ -1,15 +1,53 @@
 <?php
 
 class DeferredUpdatesTest extends MediaWikiTestCase {
+
+       /**
+        * @covers DeferredUpdates::getPendingUpdates
+        */
+       public function testGetPendingUpdates() {
+               # Prevent updates from running
+               $this->setMwGlobals( 'wgCommandLineMode', false );
+
+               $pre = DeferredUpdates::PRESEND;
+               $post = DeferredUpdates::POSTSEND;
+               $all = DeferredUpdates::ALL;
+
+               $update = $this->getMock( DeferrableUpdate::class );
+               $update->expects( $this->never() )
+                       ->method( 'doUpdate' );
+
+               DeferredUpdates::addUpdate( $update, $pre );
+               $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $pre ) );
+               $this->assertCount( 0, DeferredUpdates::getPendingUpdates( $post ) );
+               $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $all ) );
+               $this->assertCount( 1, DeferredUpdates::getPendingUpdates() );
+               DeferredUpdates::clearPendingUpdates();
+               $this->assertCount( 0, DeferredUpdates::getPendingUpdates() );
+
+               DeferredUpdates::addUpdate( $update, $post );
+               $this->assertCount( 0, DeferredUpdates::getPendingUpdates( $pre ) );
+               $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $post ) );
+               $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $all ) );
+               $this->assertCount( 1, DeferredUpdates::getPendingUpdates() );
+               DeferredUpdates::clearPendingUpdates();
+               $this->assertCount( 0, DeferredUpdates::getPendingUpdates() );
+       }
+
        public function testDoUpdatesWeb() {
                $this->setMwGlobals( 'wgCommandLineMode', false );
 
-               $updates = array(
-                       '1' => 'deferred update 1',
-                       '2' => 'deferred update 2',
-                       '3' => 'deferred update 3',
-                       '2-1' => 'deferred update 1 within deferred update 2',
-               );
+               $updates = [
+                       '1' => "deferred update 1;\n",
+                       '2' => "deferred update 2;\n",
+                       '2-1' => "deferred update 1 within deferred update 2;\n",
+                       '2-2' => "deferred update 2 within deferred update 2;\n",
+                       '3' => "deferred update 3;\n",
+                       '3-1' => "deferred update 1 within deferred update 3;\n",
+                       '3-2' => "deferred update 2 within deferred update 3;\n",
+                       '3-1-1' => "deferred update 1 within deferred update 1 within deferred update 3;\n",
+                       '3-2-1' => "deferred update 1 within deferred update 2 with deferred update 3;\n",
+               ];
                DeferredUpdates::addCallableUpdate(
                        function () use ( $updates ) {
                                echo $updates['1'];
@@ -23,14 +61,41 @@ class DeferredUpdatesTest extends MediaWikiTestCase {
                                                echo $updates['2-1'];
                                        }
                                );
+                               DeferredUpdates::addCallableUpdate(
+                                       function () use ( $updates ) {
+                                               echo $updates['2-2'];
+                                       }
+                               );
                        }
                );
                DeferredUpdates::addCallableUpdate(
                        function () use ( $updates ) {
-                               echo $updates[3];
+                               echo $updates['3'];
+                               DeferredUpdates::addCallableUpdate(
+                                       function () use ( $updates ) {
+                                               echo $updates['3-1'];
+                                               DeferredUpdates::addCallableUpdate(
+                                                       function () use ( $updates ) {
+                                                               echo $updates['3-1-1'];
+                                                       }
+                                               );
+                                       }
+                               );
+                               DeferredUpdates::addCallableUpdate(
+                                       function () use ( $updates ) {
+                                               echo $updates['3-2'];
+                                               DeferredUpdates::addCallableUpdate(
+                                                       function () use ( $updates ) {
+                                                               echo $updates['3-2-1'];
+                                                       }
+                                               );
+                                       }
+                               );
                        }
                );
 
+               $this->assertEquals( 3, DeferredUpdates::pendingUpdatesCount() );
+
                $this->expectOutputString( implode( '', $updates ) );
 
                DeferredUpdates::doUpdates();
@@ -63,13 +128,20 @@ class DeferredUpdatesTest extends MediaWikiTestCase {
 
        public function testDoUpdatesCLI() {
                $this->setMwGlobals( 'wgCommandLineMode', true );
+               $updates = [
+                       '1' => "deferred update 1;\n",
+                       '2' => "deferred update 2;\n",
+                       '2-1' => "deferred update 1 within deferred update 2;\n",
+                       '2-2' => "deferred update 2 within deferred update 2;\n",
+                       '3' => "deferred update 3;\n",
+                       '3-1' => "deferred update 1 within deferred update 3;\n",
+                       '3-2' => "deferred update 2 within deferred update 3;\n",
+                       '3-1-1' => "deferred update 1 within deferred update 1 within deferred update 3;\n",
+                       '3-2-1' => "deferred update 1 within deferred update 2 with deferred update 3;\n",
+               ];
+
+               wfGetLBFactory()->commitMasterChanges( __METHOD__ ); // clear anything
 
-               $updates = array(
-                       '1' => 'deferred update 1',
-                       '2' => 'deferred update 2',
-                       '2-1' => 'deferred update 1 within deferred update 2',
-                       '3' => 'deferred update 3',
-               );
                DeferredUpdates::addCallableUpdate(
                        function () use ( $updates ) {
                                echo $updates['1'];
@@ -83,11 +155,36 @@ class DeferredUpdatesTest extends MediaWikiTestCase {
                                                echo $updates['2-1'];
                                        }
                                );
+                               DeferredUpdates::addCallableUpdate(
+                                       function () use ( $updates ) {
+                                               echo $updates['2-2'];
+                                       }
+                               );
                        }
                );
                DeferredUpdates::addCallableUpdate(
                        function () use ( $updates ) {
-                               echo $updates[3];
+                               echo $updates['3'];
+                               DeferredUpdates::addCallableUpdate(
+                                       function () use ( $updates ) {
+                                               echo $updates['3-1'];
+                                               DeferredUpdates::addCallableUpdate(
+                                                       function () use ( $updates ) {
+                                                               echo $updates['3-1-1'];
+                                                       }
+                                               );
+                                       }
+                               );
+                               DeferredUpdates::addCallableUpdate(
+                                       function () use ( $updates ) {
+                                               echo $updates['3-2'];
+                                               DeferredUpdates::addCallableUpdate(
+                                                       function () use ( $updates ) {
+                                                               echo $updates['3-2-1'];
+                                                       }
+                                               );
+                                       }
+                               );
                        }
                );