diff --git a/core/modules/content_moderation/tests/src/Kernel/ContentModerationSyncingTest.php b/core/modules/content_moderation/tests/src/Kernel/ContentModerationSyncingTest.php index 1a61d7cd51..1f53c38fe6 100644 --- a/core/modules/content_moderation/tests/src/Kernel/ContentModerationSyncingTest.php +++ b/core/modules/content_moderation/tests/src/Kernel/ContentModerationSyncingTest.php @@ -110,4 +110,39 @@ public function testMultipleRevisionStateChangedDuringSync() { $this->assertTrue($entity->isDefaultRevision()); } + /** + * Test modifying a previous revision during a sync. + */ + public function testUpdatingPreviousRevisionDuringSync() { + $storage = $this->container->get('entity_type.manager')->getStorage('entity_test_mulrevpub'); + + $entity = EntityTestMulRevPub::create([ + 'moderation_state' => 'published', + 'name' => 'foo', + ]); + $entity->save(); + $original_revision_id = $entity->getRevisionId(); + + $entity->name = 'bar'; + $entity->save(); + + // Sync a change to the 'name' on the original revision ID. + $original_revision = $storage->loadRevision($original_revision_id); + $original_revision->setSyncing(TRUE); + $original_revision->name = 'baz'; + $original_revision->save(); + + // The names of each revision should reflect two revisions, the original one + // having been updated during a sync. + $all_revision_names = array_map(function($revision_id) use ($storage) { + return $storage->loadRevision($revision_id)->name->value; + }, array_keys($storage->getQuery() + ->allRevisions() + ->condition('id', $entity->id()) + ->sort('revision_id', 'ASC') + ->execute()) + ); + $this->assertEquals(['baz', 'bar'], $all_revision_names); + } + }