+ /**
+ * @param string $role
+ * @param Content $content
+ * @return SlotRecord
+ */
+ private function newSavedSlot( $role, Content $content ) {
+ return SlotRecord::newSaved( 7, 7, 'xyz', SlotRecord::newUnsaved( $role, $content ) );
+ }
+
+ public function testApplyUpdate() {
+ /** @var SlotRecord[] $parentSlots */
+ $parentSlots = [
+ 'X' => $this->newSavedSlot( 'X', new WikitextContent( 'X' ) ),
+ 'Y' => $this->newSavedSlot( 'Y', new WikitextContent( 'Y' ) ),
+ 'Z' => $this->newSavedSlot( 'Z', new WikitextContent( 'Z' ) ),
+ ];
+ $slots = MutableRevisionSlots::newFromParentRevisionSlots( $parentSlots );
+ $update = RevisionSlotsUpdate::newFromContent( [
+ 'A' => new WikitextContent( 'A' ),
+ 'Y' => new WikitextContent( 'yyy' ),
+ ] );
+
+ $update->removeSlot( 'Z' );
+
+ $update->apply( $slots );
+ $this->assertSame( [ 'X', 'Y', 'A' ], $slots->getSlotRoles() );
+ $this->assertSame( $update->getModifiedSlot( 'A' ), $slots->getSlot( 'A' ) );
+ $this->assertSame( $update->getModifiedSlot( 'Y' ), $slots->getSlot( 'Y' ) );
+ }
+