+
+ // Create the third revision.
+ $random_timestamp = rand(1e8, 2e8);
+ $this->createRevision($entity, $user, $random_timestamp, 'This is my log message');
+ $this->assertItemsTableCount(3, $definition);
+ $revision_ids[] = $entity->getRevisionId();
+
+ // Create another 3 revisions.
+ foreach (range(1, 3) as $count) {
+ $timestamp = rand(1e8, 2e8);
+ $this->createRevision($entity, $user, $timestamp, 'This is my log message number: ' . $count);
+ $revision_ids[] = $entity->getRevisionId();
+ }
+ $this->assertItemsTableCount(6, $definition);
+
+ $this->assertEqual(6, count($revision_ids));
+
+ // Delete the first 3 revisions.
+ foreach (range(0, 2) as $key) {
+ $storage->deleteRevision($revision_ids[$key]);
+ }
+
+ // We should have only data for three revisions.
+ $this->assertItemsTableCount(3, $definition);
+ }
+
+ /**
+ * Asserts the ammount of items on entity related tables.
+ *
+ * @param int $count
+ * The number of items expected to be in revisions related tables.
+ * @param \Drupal\Core\Entity\EntityTypeInterface $definition
+ * The definition and metada of the entity being tested.
+ */
+ protected function assertItemsTableCount($count, EntityTypeInterface $definition) {
+ $this->assertEqual(1, db_query('SELECT COUNT(*) FROM {' . $definition->getBaseTable() . '}')->fetchField());
+ $this->assertEqual(1, db_query('SELECT COUNT(*) FROM {' . $definition->getDataTable() . '}')->fetchField());
+ $this->assertEqual($count, db_query('SELECT COUNT(*) FROM {' . $definition->getRevisionTable() . '}')->fetchField());
+ $this->assertEqual($count, db_query('SELECT COUNT(*) FROM {' . $definition->getRevisionDataTable() . '}')->fetchField());
+ }
+
+ /**
+ * Creates a new revision in the entity of this test class.
+ *
+ * @param \Drupal\Core\Entity\EntityInterface $entity
+ * The entity where revision will be created.
+ * @param \Drupal\user\UserInterface $user
+ * The author of the new revision.
+ * @param int $timestamp
+ * The timestamp of the new revision.
+ * @param string $log_message
+ * The log message of the new revision.
+ */
+ protected function createRevision(EntityInterface $entity, UserInterface $user, $timestamp, $log_message) {
+ $entity->setNewRevision(TRUE);
+ $entity->setRevisionCreationTime($timestamp);
+ $entity->setRevisionUserId($user->id());
+ $entity->setRevisionLogMessage($log_message);
+ $entity->save();