save(); $this->installEntitySchema('entity_test_mulrev'); } /** * Tests if the translation object has the right revision id after new revision. */ public function testNewRevisionAfterTranslation() { $user = $this->createUser(); // Create a test entity. $entity = EntityTestMulRev::create([ 'name' => $this->randomString(), 'user_id' => $user->id(), 'language' => 'en', ]); $entity->save(); $old_rev_id = $entity->getRevisionId(); $translation = $entity->addTranslation('de'); $translation->setNewRevision(); $translation->save(); $this->assertTrue($translation->getRevisionId() > $old_rev_id, 'The saved translation in new revision has a newer revision id.'); $this->assertTrue($this->reloadEntity($entity)->getRevisionId() > $old_rev_id, 'The entity from the storage has a newer revision id.'); } /** * Tests if the translation object has the right revision id after new revision. */ public function testRevertRevisionAfterTranslation() { $user = $this->createUser(); $storage = $this->entityManager->getStorage('entity_test_mulrev'); // Create a test entity. $entity = EntityTestMulRev::create([ 'name' => $this->randomString(), 'user_id' => $user->id(), 'language' => 'en', ]); $entity->save(); $old_rev_id = $entity->getRevisionId(); $translation = $entity->addTranslation('de'); $translation->setNewRevision(); $translation->save(); $entity = $this->reloadEntity($entity); $this->assertTrue($entity->hasTranslation('de')); $entity = $storage->loadRevision($old_rev_id); $entity->setNewRevision(); $entity->isDefaultRevision(TRUE); $entity->save(); $entity = $this->reloadEntity($entity); $this->assertFalse($entity->hasTranslation('de')); } /** * Tests the translation values when saving a forward revision. */ public function testTranslationValuesWhenSavingForwardRevisions() { $user = $this->createUser(); $storage = $this->entityManager->getStorage('entity_test_mulrev'); // Create a test entity and a translation for it. $entity = EntityTestMulRev::create([ 'name' => 'default revision - en', 'user_id' => $user->id(), 'language' => 'en', ]); $entity->addTranslation('de', ['name' => 'default revision - de']); $entity->save(); // Create a forward revision for the entity and change a field value for // both languages. $forward_revision = $this->reloadEntity($entity); $forward_revision->setNewRevision(); $forward_revision->isDefaultRevision(FALSE); $forward_revision->name = 'forward revision - en'; $forward_revision->save(); $forward_revision_translation = $forward_revision->getTranslation('de'); $forward_revision_translation->name = 'forward revision - de'; $forward_revision_translation->save(); $forward_revision_id = $forward_revision->getRevisionId(); $forward_revision = $storage->loadRevision($forward_revision_id); // Change the value of the field in the default language, save the forward // revision and check that the value of the field in the second language is // also taken from the forward revision, *not* from the default revision. $forward_revision->name = 'updated forward revision - en'; $forward_revision->save(); $forward_revision = $storage->loadRevision($forward_revision_id); $this->assertEquals($forward_revision->name->value, 'updated forward revision - en'); $this->assertEquals($forward_revision->getTranslation('de')->name->value, 'forward revision - de'); } /** * Tests changing the default revision flag is propagated to all translations. */ public function testDefaultRevision() { // Create a test entity with a translation, which will internally trigger // entity cloning for the new translation and create references for some of // the entity properties. $entity = EntityTestMulRev::create([ 'name' => 'original', 'language' => 'en', ]); $translation = $entity->addTranslation('de'); $entity->save(); // Assert that the entity is in the default revision. $this->assertTrue($entity->isDefaultRevision()); $this->assertTrue($translation->isDefaultRevision()); // Change the default revision flag on one of the entity translations and // assert that the change is propagated to all entity translation objects. $translation->isDefaultRevision(FALSE); $this->assertFalse($entity->isDefaultRevision()); $this->assertFalse($translation->isDefaultRevision()); } }