1 field.test FieldAttachStorageTestCase::testFieldAttachDelete()

Test field_attach_delete().

File

core/modules/field/tests/field.test, line 514
Tests for field.module.

Class

FieldAttachStorageTestCase
Unit test class for storage-related field_attach_* functions.

Code

function testFieldAttachDelete() {
  $entity_type = 'test_entity';
  $langcode = LANGUAGE_NONE;
  $rev[0] = field_test_create_entity(0, 0, $this->instance['bundle']);

  // Create revision 0
  $values = $this->_generateTestFieldValues($this->field['cardinality']);
  $rev[0]->{$this->field_name}[$langcode] = $values;
  field_attach_insert($entity_type, $rev[0]);

  // Create revision 1
  $rev[1] = field_test_create_entity(0, 1, $this->instance['bundle']);
  $rev[1]->{$this->field_name}[$langcode] = $values;
  field_attach_update($entity_type, $rev[1]);

  // Create revision 2
  $rev[2] = field_test_create_entity(0, 2, $this->instance['bundle']);
  $rev[2]->{$this->field_name}[$langcode] = $values;
  field_attach_update($entity_type, $rev[2]);

  // Confirm each revision loads
  foreach (array_keys($rev) as $vid) {
    $read = field_test_create_entity(0, $vid, $this->instance['bundle']);
    field_attach_load_revision($entity_type, array(0 => $read));
    $this->assertEqual(count($read->{$this->field_name}[$langcode]), $this->field['cardinality'], "The test entity revision $vid has {$this->field['cardinality']} values.");
  }

  // Delete revision 1, confirm the other two still load.
  field_attach_delete_revision($entity_type, $rev[1]);
  foreach (array(0, 2) as $vid) {
    $read = field_test_create_entity(0, $vid, $this->instance['bundle']);
    field_attach_load_revision($entity_type, array(0 => $read));
    $this->assertEqual(count($read->{$this->field_name}[$langcode]), $this->field['cardinality'], "The test entity revision $vid has {$this->field['cardinality']} values.");
  }

  // Confirm the current revision still loads
  $read = field_test_create_entity(0, 2, $this->instance['bundle']);
  field_attach_load($entity_type, array(0 => $read));
  $this->assertEqual(count($read->{$this->field_name}[$langcode]), $this->field['cardinality'], "The test entity current revision has {$this->field['cardinality']} values.");

  // Delete all field data, confirm nothing loads
  field_attach_delete($entity_type, $rev[2]);
  foreach (array(0, 1, 2) as $vid) {
    $read = field_test_create_entity(0, $vid, $this->instance['bundle']);
    field_attach_load_revision($entity_type, array(0 => $read));
    $this->assertIdentical($read->{$this->field_name}, array(), "The test entity revision $vid is deleted.");
  }
  $read = field_test_create_entity(0, 2, $this->instance['bundle']);
  field_attach_load($entity_type, array(0 => $read));
  $this->assertIdentical($read->{$this->field_name}, array(), 'The test entity current revision is deleted.');
}