Check node revision related operations.
public function testRevisions() {
// Create initial entity.
$entity = entity_create('entity_test', array(
'name' => 'foo',
'user_id' => $this->web_user->uid,
));
$entity->field_test_text->value = 'bar';
$entity
->save();
$entities = array();
$names = array();
$texts = 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_test_load($entity->id->value);
$entity
->setNewRevision(TRUE);
$names[] = $entity->name->value = $this
->randomName(32);
$texts[] = $entity->field_test_text->value = $this
->randomName(32);
$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, 'Revision ID changed.');
$this
->assertNotEqual($entity->name->value, $legacy_name, 'Name changed.');
$this
->assertNotEqual($entity->field_test_text->value, $legacy_text, 'Text changed.');
}
for ($i = 0; $i < $revision_count; $i++) {
// Load specific revision.
$entity_revision = entity_revision_load('entity_test', $revision_ids[$i]);
// Check if properties and fields contain the revision specific content.
$this
->assertEqual($entity_revision->revision_id->value, $revision_ids[$i], 'Revision ID matches.');
$this
->assertEqual($entity_revision->name->value, $names[$i], 'Name matches.');
$this
->assertEqual($entity_revision->field_test_text->value, $texts[$i], 'Text matches.');
}
// Confirm the correct revision text appears in the edit form.
$entity = entity_load('entity_test', $entity->id->value);
$this
->drupalGet('entity-test/manage/' . $entity->id->value);
$this
->assertFieldById('edit-name', $entity->name->value, 'Name matches in UI.');
$this
->assertFieldById('edit-field-test-text-und-0-value', $entity->field_test_text->value, 'Text matches in UI.');
}