diff --git a/core/lib/Drupal/Core/Entity/ContentEntityBase.php b/core/lib/Drupal/Core/Entity/ContentEntityBase.php index 871a4a1..6117347 100644 --- a/core/lib/Drupal/Core/Entity/ContentEntityBase.php +++ b/core/lib/Drupal/Core/Entity/ContentEntityBase.php @@ -818,7 +818,6 @@ protected function initializeTranslation($langcode) { $translation->translatableEntityKeys = &$this->translatableEntityKeys; $translation->translationInitialize = FALSE; $translation->typedData = NULL; - $translation->originalRevisionId = NULL; return $translation; } @@ -1067,9 +1066,7 @@ public function __clone() { $enforce_is_new = $this->enforceIsNew; $this->enforceIsNew = &$enforce_is_new; - if ($this->getEntityType()->isRevisionable()) { - $this->originalRevisionId = NULL; - } + $this->originalRevisionId = NULL; } } diff --git a/core/tests/Drupal/KernelTests/Core/Entity/EntityOriginalRevisionTest.php b/core/tests/Drupal/KernelTests/Core/Entity/EntityOriginalRevisionTest.php index 151bad9..13356b8 100644 --- a/core/tests/Drupal/KernelTests/Core/Entity/EntityOriginalRevisionTest.php +++ b/core/tests/Drupal/KernelTests/Core/Entity/EntityOriginalRevisionTest.php @@ -87,13 +87,32 @@ public function testOriginalRevisionId() { $this->assertEquals($loaded->getRevisionId(), $originalRevisionId2); $this->assertEquals($loaded->getRevisionId(), $loaded->getOriginalRevisionId()); + // Creating a duplicate should set a NULL original revision ID. $duplicate = $loaded->createDuplicate(); $this->assertSame(NULL, $duplicate->getOriginalRevisionId()); + // Creating a clone should set a NULL original revision ID. $clone = clone $loaded; $this->assertSame(NULL, $clone->getOriginalRevisionId()); + // Check it all works with translations. $french = $loaded->addTranslation('fr'); - $this->assertSame(NULL, $french->getOriginalRevisionId()); + // Adding a revision should return the same for each language. + $this->assertEquals($french->getRevisionId(), $french->getOriginalRevisionId()); + $this->assertEquals($loaded->getRevisionId(), $french->getOriginalRevisionId()); + $this->assertEquals($loaded->getOriginalRevisionId(), $french->getOriginalRevisionId()); + $french->save(); + // After saving nothing should change. + $this->assertEquals($french->getRevisionId(), $french->getOriginalRevisionId()); + $this->assertEquals($loaded->getRevisionId(), $french->getOriginalRevisionId()); + $this->assertEquals($loaded->getOriginalRevisionId(), $french->getOriginalRevisionId()); + $french->setNewRevision(); + // Setting a new revision will reset the original revision ID. + $this->assertNotEquals($french->getRevisionId(), $french->getOriginalRevisionId()); + $this->assertGreaterThan($french->getRevisionId(), $french->getOriginalRevisionId()); + $french->save(); + // Saving the new revision will reset the origin revision ID again. + $this->assertEquals($french->getRevisionId(), $french->getOriginalRevisionId()); + } }