3 namespace Drupal\KernelTests\Core\Entity;
5 use Drupal\entity_test\Entity\EntityTestMulRev;
6 use Drupal\entity_test\Entity\EntityTestRev;
7 use Drupal\language\Entity\ConfigurableLanguage;
10 * Tests non-revisionable fields on revisionable (and translatable) entities.
14 class ContentEntityNonRevisionableFieldTest extends EntityKernelTestBase {
21 public static $modules = ['language'];
24 * The EntityTestMulRev entity type storage.
26 * @var \Drupal\Core\Entity\EntityStorageInterface
31 * The EntityTestRev entity type storage.
33 * @var \Drupal\Core\Entity\EntityStorageInterface
40 protected function setUp() {
43 // Enable an additional language.
44 ConfigurableLanguage::createFromLangcode('de')->save();
46 $this->installEntitySchema('entity_test_mulrev');
47 $this->installEntitySchema('entity_test_rev');
48 $this->mulRev = $this->entityManager->getStorage('entity_test_mulrev');
49 $this->rev = $this->entityManager->getStorage('entity_test_rev');
53 * Tests non-revisionable fields on revisionable and translatable entities.
55 public function testMulNonRevisionableField() {
56 $user1 = $this->createUser();
57 $user2 = $this->createUser();
59 // Create a test entity.
60 $entity = EntityTestMulRev::create([
61 'name' => $this->randomString(),
62 'user_id' => $user1->id(),
64 'non_rev_field' => 'Huron',
68 // Create a test entity.
69 $entity2 = EntityTestMulRev::create([
70 'name' => $this->randomString(),
71 'user_id' => $user1->id(),
73 'non_rev_field' => 'Michigan',
77 $this->assertEquals('Huron', $entity->get('non_rev_field')->value, 'Huron found on entity 1');
78 $this->assertEquals('Michigan', $entity2->get('non_rev_field')->value, 'Michigan found on entity 2');
80 $entity->setNewRevision();
81 $entity->setOwner($user2);
83 $entity2->setNewRevision();
84 $entity2->setOwner($user2);
86 $this->assertEquals($user2->id(), $entity->getOwner()->id(), 'User 2 found on entity 1');
87 $this->assertEquals($user2->id(), $entity2->getOwner()->id(), 'User 2 found on entity 2');
89 $entity->addTranslation('de');
91 $entity2->addTranslation('de');
94 $expected_revision_ids = [
100 $revision_ids = $this->mulRev->getQuery()
102 ->sort('revision_id', 'DESC')
104 $this->assertEquals($expected_revision_ids, $revision_ids, 'Revision ids found');
106 $expected_non_rev_field_revision_ids = [
110 $non_rev_field_revision_ids = $this->mulRev->getQuery()
112 ->condition('non_rev_field', 'Huron')
113 ->sort('revision_id', 'DESC')
115 $this->assertEquals($expected_non_rev_field_revision_ids, $non_rev_field_revision_ids, 'Revision ids found');
119 * Tests non-revisionable fields on revisionable entities.
121 public function testNonRevisionableField() {
122 $user1 = $this->createUser();
123 $user2 = $this->createUser();
125 // Create a test entity.
126 $entity = EntityTestRev::create([
127 'name' => $this->randomString(),
128 'user_id' => $user1->id(),
129 'non_rev_field' => 'Superior',
133 // Create a test entity.
134 $entity2 = EntityTestRev::create([
135 'name' => $this->randomString(),
136 'user_id' => $user1->id(),
137 'non_rev_field' => 'Ontario',
141 $this->assertEquals('Superior', $entity->get('non_rev_field')->value, 'Superior found on entity 1');
142 $this->assertEquals('Ontario', $entity2->get('non_rev_field')->value, 'Ontario found on entity 2');
144 $entity->setNewRevision();
145 $entity->setOwner($user2);
147 $entity2->setNewRevision();
148 $entity2->setOwner($user2);
150 $this->assertEquals($user2->id(), $entity->getOwner()->id(), 'User 2 found on entity 1');
151 $this->assertEquals($user2->id(), $entity2->getOwner()->id(), 'User 2 found on entity 2');
153 $expected_revision_ids = [
159 $revision_ids = $this->rev->getQuery()
161 ->sort('revision_id', 'DESC')
163 $this->assertEquals($expected_revision_ids, $revision_ids, 'Revision ids found');
165 $expected_non_rev_field_revision_ids = [
169 $non_rev_field_revision_ids = $this->rev->getQuery()
171 ->condition('non_rev_field', 'Superior')
172 ->sort('revision_id', 'DESC')
174 $this->assertEquals($expected_non_rev_field_revision_ids, $non_rev_field_revision_ids, 'Revision ids found');
178 * Tests multi column non revisionable base field for revisionable entity.
180 public function testMultiColumnNonRevisionableBaseField() {
181 \Drupal::state()->set('entity_test.multi_column', TRUE);
182 \Drupal::entityDefinitionUpdateManager()->applyUpdates();
183 // Refresh the storage.
184 $this->mulRev = $this->entityManager->getStorage('entity_test_mulrev');
185 $user1 = $this->createUser();
187 // Create a test entity.
188 $entity = EntityTestMulRev::create([
189 'name' => $this->randomString(),
190 'user_id' => $user1->id(),
192 'non_rev_field' => 'Huron',
199 $entity = $this->mulRev->loadUnchanged($entity->id());
206 $this->assertEquals('Huron', $entity->get('non_rev_field')->value, 'Huron found on entity 1');
207 $this->assertEquals($expected, $entity->description->getValue());