Merge "Use job queue for deletion of pages with many revisions"
[lhc/web/wiklou.git] / tests / phpunit / includes / Storage / RevisionSlotsTest.php
index 95bba47..409e002 100644 (file)
@@ -46,11 +46,11 @@ class RevisionSlotsTest extends MediaWikiTestCase {
         * @covers \MediaWiki\Storage\RevisionSlots::getSlot
         */
        public function testGetSlot() {
-               $mainSlot = SlotRecord::newUnsaved( 'main', new WikitextContent( 'A' ) );
+               $mainSlot = SlotRecord::newUnsaved( SlotRecord::MAIN, new WikitextContent( 'A' ) );
                $auxSlot = SlotRecord::newUnsaved( 'aux', new WikitextContent( 'B' ) );
                $slots = $this->newRevisionSlots( [ $mainSlot, $auxSlot ] );
 
-               $this->assertSame( $mainSlot, $slots->getSlot( 'main' ) );
+               $this->assertSame( $mainSlot, $slots->getSlot( SlotRecord::MAIN ) );
                $this->assertSame( $auxSlot, $slots->getSlot( 'aux' ) );
                $this->setExpectedException( RevisionAccessException::class );
                $slots->getSlot( 'nothere' );
@@ -60,11 +60,11 @@ class RevisionSlotsTest extends MediaWikiTestCase {
         * @covers \MediaWiki\Storage\RevisionSlots::hasSlot
         */
        public function testHasSlot() {
-               $mainSlot = SlotRecord::newUnsaved( 'main', new WikitextContent( 'A' ) );
+               $mainSlot = SlotRecord::newUnsaved( SlotRecord::MAIN, new WikitextContent( 'A' ) );
                $auxSlot = SlotRecord::newUnsaved( 'aux', new WikitextContent( 'B' ) );
                $slots = $this->newRevisionSlots( [ $mainSlot, $auxSlot ] );
 
-               $this->assertTrue( $slots->hasSlot( 'main' ) );
+               $this->assertTrue( $slots->hasSlot( SlotRecord::MAIN ) );
                $this->assertTrue( $slots->hasSlot( 'aux' ) );
                $this->assertFalse( $slots->hasSlot( 'AUX' ) );
                $this->assertFalse( $slots->hasSlot( 'xyz' ) );
@@ -76,11 +76,11 @@ class RevisionSlotsTest extends MediaWikiTestCase {
        public function testGetContent() {
                $mainContent = new WikitextContent( 'A' );
                $auxContent = new WikitextContent( 'B' );
-               $mainSlot = SlotRecord::newUnsaved( 'main', $mainContent );
+               $mainSlot = SlotRecord::newUnsaved( SlotRecord::MAIN, $mainContent );
                $auxSlot = SlotRecord::newUnsaved( 'aux', $auxContent );
                $slots = $this->newRevisionSlots( [ $mainSlot, $auxSlot ] );
 
-               $this->assertSame( $mainContent, $slots->getContent( 'main' ) );
+               $this->assertSame( $mainContent, $slots->getContent( SlotRecord::MAIN ) );
                $this->assertSame( $auxContent, $slots->getContent( 'aux' ) );
                $this->setExpectedException( RevisionAccessException::class );
                $slots->getContent( 'nothere' );
@@ -90,7 +90,7 @@ class RevisionSlotsTest extends MediaWikiTestCase {
         * @covers \MediaWiki\Storage\RevisionSlots::getSlotRoles
         */
        public function testGetSlotRoles_someSlots() {
-               $mainSlot = SlotRecord::newUnsaved( 'main', new WikitextContent( 'A' ) );
+               $mainSlot = SlotRecord::newUnsaved( SlotRecord::MAIN, new WikitextContent( 'A' ) );
                $auxSlot = SlotRecord::newUnsaved( 'aux', new WikitextContent( 'B' ) );
                $slots = $this->newRevisionSlots( [ $mainSlot, $auxSlot ] );
 
@@ -110,7 +110,7 @@ class RevisionSlotsTest extends MediaWikiTestCase {
         * @covers \MediaWiki\Storage\RevisionSlots::getSlots
         */
        public function testGetSlots() {
-               $mainSlot = SlotRecord::newUnsaved( 'main', new WikitextContent( 'A' ) );
+               $mainSlot = SlotRecord::newUnsaved( SlotRecord::MAIN, new WikitextContent( 'A' ) );
                $auxSlot = SlotRecord::newUnsaved( 'aux', new WikitextContent( 'B' ) );
                $slotsArray = [ $mainSlot, $auxSlot ];
                $slots = $this->newRevisionSlots( $slotsArray );
@@ -122,7 +122,7 @@ class RevisionSlotsTest extends MediaWikiTestCase {
         * @covers \MediaWiki\Storage\RevisionSlots::getInheritedSlots
         */
        public function testGetInheritedSlots() {
-               $mainSlot = SlotRecord::newUnsaved( 'main', new WikitextContent( 'A' ) );
+               $mainSlot = SlotRecord::newUnsaved( SlotRecord::MAIN, new WikitextContent( 'A' ) );
                $auxSlot = SlotRecord::newInherited(
                        SlotRecord::newSaved(
                                7, 7, 'foo',
@@ -136,10 +136,10 @@ class RevisionSlotsTest extends MediaWikiTestCase {
        }
 
        /**
-        * @covers \MediaWiki\Storage\RevisionSlots::getTouchedSlots
+        * @covers \MediaWiki\Storage\RevisionSlots::getOriginalSlots
         */
-       public function testGetTouchedSlots() {
-               $mainSlot = SlotRecord::newUnsaved( 'main', new WikitextContent( 'A' ) );
+       public function testGetOriginalSlots() {
+               $mainSlot = SlotRecord::newUnsaved( SlotRecord::MAIN, new WikitextContent( 'A' ) );
                $auxSlot = SlotRecord::newInherited(
                        SlotRecord::newSaved(
                                7, 7, 'foo',
@@ -149,7 +149,7 @@ class RevisionSlotsTest extends MediaWikiTestCase {
                $slotsArray = [ $mainSlot, $auxSlot ];
                $slots = $this->newRevisionSlots( $slotsArray );
 
-               $this->assertEquals( [ 'main' => $mainSlot ], $slots->getTouchedSlots() );
+               $this->assertEquals( [ 'main' => $mainSlot ], $slots->getOriginalSlots() );
        }
 
        public function provideComputeSize() {
@@ -224,4 +224,34 @@ class RevisionSlotsTest extends MediaWikiTestCase {
                $this->assertSame( $same, $b->hasSameContent( $a ) );
        }
 
+       public function provideGetRolesWithDifferentContent() {
+               $fooX = SlotRecord::newUnsaved( 'x', new TextContent( 'Foo' ) );
+               $barZ = SlotRecord::newUnsaved( 'z', new TextContent( 'Bar' ) );
+               $fooY = SlotRecord::newUnsaved( 'y', new TextContent( 'Foo' ) );
+               $barZS = SlotRecord::newSaved( 7, 7, 'xyz', $barZ );
+               $barZ2 = SlotRecord::newUnsaved( 'z', new TextContent( 'Baz' ) );
+
+               $a = $this->newRevisionSlots( [ 'x' => $fooX, 'z' => $barZ ] );
+               $a2 = $this->newRevisionSlots( [ 'x' => $fooX, 'z' => $barZ ] );
+               $a3 = $this->newRevisionSlots( [ 'x' => $fooX, 'z' => $barZS ] );
+               $b = $this->newRevisionSlots( [ 'y' => $fooY, 'z' => $barZ ] );
+               $c = $this->newRevisionSlots( [ 'x' => $fooX, 'z' => $barZ2 ] );
+
+               yield 'same instance' => [ $a, $a, [] ];
+               yield 'same slots' => [ $a, $a2, [] ];
+               yield 'same content' => [ $a, $a3, [] ];
+
+               yield 'different roles' => [ $a, $b, [ 'x', 'y' ] ];
+               yield 'different content' => [ $a, $c, [ 'z' ] ];
+       }
+
+       /**
+        * @dataProvider provideGetRolesWithDifferentContent
+        * @covers \MediaWiki\Storage\RevisionSlots::getRolesWithDifferentContent
+        */
+       public function testGetRolesWithDifferentContent( RevisionSlots $a, RevisionSlots $b, $roles ) {
+               $this->assertArrayEquals( $roles, $a->getRolesWithDifferentContent( $b ) );
+               $this->assertArrayEquals( $roles, $b->getRolesWithDifferentContent( $a ) );
+       }
+
 }