Pull merge.
[yaffs-website] / web / core / tests / Drupal / KernelTests / Core / Entity / EntityQueryTest.php
index e69260489809aaea3c879b7574b099ca2c650abd..a6819f01905084c3b19557897dc70ad9b706f8fa 100644 (file)
@@ -138,8 +138,11 @@ class EntityQueryTest extends EntityKernelTestBase {
       }
       foreach (array_reverse(str_split(decbin($i))) as $key => $bit) {
         if ($bit) {
-          list($field_name, $langcode, $values) = $units[$key];
-          $entity->getTranslation($langcode)->{$field_name}[] = $values;
+          // @todo https://www.drupal.org/project/drupal/issues/3001920 Doing
+          //   list($field_name, $langcode, $values) = $units[$key]; causes
+          //   problems in PHP 7.3. Revert to better variable names once
+          //   https://bugs.php.net/bug.php?id=76937 is fixed.
+          $entity->getTranslation($units[$key][1])->{$units[$key][0]}[] = $units[$key][2];
         }
       }
       $entity->save();
@@ -1160,4 +1163,42 @@ class EntityQueryTest extends EntityKernelTestBase {
     $this->assertEquals($entity->id(), reset($result));
   }
 
+  /**
+   * Tests entity queries with condition on the revision metadata keys.
+   */
+  public function testConditionOnRevisionMetadataKeys() {
+    $this->installModule('entity_test_revlog');
+    $this->installEntitySchema('entity_test_revlog');
+
+    /** @var \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager */
+    $entity_type_manager = $this->container->get('entity_type.manager');
+    /** @var \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type */
+    $entity_type = $entity_type_manager->getDefinition('entity_test_revlog');
+    /** @var \Drupal\Core\Entity\ContentEntityStorageInterface $storage */
+    $storage = $entity_type_manager->getStorage('entity_test_revlog');
+
+    $revision_created_timestamp = time();
+    $revision_created_field_name = $entity_type->getRevisionMetadataKey('revision_created');
+    $entity = $storage->create([
+      'type' => 'entity_test',
+      $revision_created_field_name => $revision_created_timestamp,
+    ]);
+    $entity->save();
+
+    // Query only the default revision.
+    $result = $storage->getQuery()
+      ->condition($revision_created_field_name, $revision_created_timestamp)
+      ->execute();
+    $this->assertCount(1, $result);
+    $this->assertEquals($entity->id(), reset($result));
+
+    // Query all revisions.
+    $result = $storage->getQuery()
+      ->condition($revision_created_field_name, $revision_created_timestamp)
+      ->allRevisions()
+      ->execute();
+    $this->assertCount(1, $result);
+    $this->assertEquals($entity->id(), reset($result));
+  }
+
 }