protected function EntityRevisionsTest::runRevisionsTests in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Entity/EntityRevisionsTest.php \Drupal\system\Tests\Entity\EntityRevisionsTest::runRevisionsTests()
Executes the revision tests for the given entity type.
Parameters
string $entity_type: The entity type to run the tests with.
1 call to EntityRevisionsTest::runRevisionsTests()
- EntityRevisionsTest::testRevisions in core/
modules/ system/ src/ Tests/ Entity/ EntityRevisionsTest.php - Check node revision related operations.
File
- core/
modules/ system/ src/ Tests/ Entity/ EntityRevisionsTest.php, line 62 - Contains \Drupal\system\Tests\Entity\EntityRevisionsTest.
Class
- EntityRevisionsTest
- Create a entity with revisions and test viewing, saving, reverting, and deleting revisions.
Namespace
Drupal\system\Tests\EntityCode
protected function runRevisionsTests($entity_type) {
// Create initial entity.
$entity = entity_create($entity_type, array(
'name' => 'foo',
'user_id' => $this->webUser
->id(),
));
$entity->field_test_text->value = 'bar';
$entity
->save();
$names = array();
$texts = array();
$created = array();
$revision_ids = array();
// Create three revisions.
$revision_count = 3;
for ($i = 0; $i < $revision_count; $i++) {
$legacy_revision_id = $entity->revision_id->value;
$legacy_name = $entity->name->value;
$legacy_text = $entity->field_test_text->value;
$entity = entity_load($entity_type, $entity->id->value);
$entity
->setNewRevision(TRUE);
$names[] = $entity->name->value = $this
->randomMachineName(32);
$texts[] = $entity->field_test_text->value = $this
->randomMachineName(32);
$created[] = $entity->created->value = time() + $i + 1;
$entity
->save();
$revision_ids[] = $entity->revision_id->value;
// Check that the fields and properties contain new content.
$this
->assertTrue($entity->revision_id->value > $legacy_revision_id, format_string('%entity_type: Revision ID changed.', array(
'%entity_type' => $entity_type,
)));
$this
->assertNotEqual($entity->name->value, $legacy_name, format_string('%entity_type: Name changed.', array(
'%entity_type' => $entity_type,
)));
$this
->assertNotEqual($entity->field_test_text->value, $legacy_text, format_string('%entity_type: Text changed.', array(
'%entity_type' => $entity_type,
)));
}
for ($i = 0; $i < $revision_count; $i++) {
// Load specific revision.
$entity_revision = entity_revision_load($entity_type, $revision_ids[$i]);
// Check if properties and fields contain the revision specific content.
$this
->assertEqual($entity_revision->revision_id->value, $revision_ids[$i], format_string('%entity_type: Revision ID matches.', array(
'%entity_type' => $entity_type,
)));
$this
->assertEqual($entity_revision->name->value, $names[$i], format_string('%entity_type: Name matches.', array(
'%entity_type' => $entity_type,
)));
$this
->assertEqual($entity_revision->field_test_text->value, $texts[$i], format_string('%entity_type: Text matches.', array(
'%entity_type' => $entity_type,
)));
// Check non-revisioned values are loaded.
$this
->assertTrue(isset($entity_revision->created->value), format_string('%entity_type: Non-revisioned field is loaded.', array(
'%entity_type' => $entity_type,
)));
$this
->assertEqual($entity_revision->created->value, $created[2], format_string('%entity_type: Non-revisioned field value is the same between revisions.', array(
'%entity_type' => $entity_type,
)));
}
// Confirm the correct revision text appears in the edit form.
$entity = entity_load($entity_type, $entity->id->value);
$this
->drupalGet($entity_type . '/manage/' . $entity->id->value . '/edit');
$this
->assertFieldById('edit-name-0-value', $entity->name->value, format_string('%entity_type: Name matches in UI.', array(
'%entity_type' => $entity_type,
)));
$this
->assertFieldById('edit-field-test-text-0-value', $entity->field_test_text->value, format_string('%entity_type: Text matches in UI.', array(
'%entity_type' => $entity_type,
)));
}