summaryrefslogtreecommitdiff
path: root/modules/field/field.test
diff options
context:
space:
mode:
Diffstat (limited to 'modules/field/field.test')
-rw-r--r--modules/field/field.test81
1 files changed, 64 insertions, 17 deletions
diff --git a/modules/field/field.test b/modules/field/field.test
index 917654721..64a13f323 100644
--- a/modules/field/field.test
+++ b/modules/field/field.test
@@ -116,39 +116,86 @@ class FieldAttachTestCase extends DrupalWebTestCase {
*/
function testFieldAttachSaveMissingData() {
$entity_type = 'test_entity';
- $entity = field_test_create_stub_entity(0, 0, $this->instance['bundle']);
+ $entity_init = field_test_create_stub_entity();
// Insert: Field is missing.
+ $entity = clone($entity_init);
field_attach_insert($entity_type, $entity);
- field_attach_load($entity_type, array(0 => $entity));
- $this->assertEqual(count($entity->{$this->field_name}), 0, 'Missing field results in no inserts');
+
+ $entity = clone($entity_init);
+ field_attach_load($entity_type, array($entity->ftid => $entity));
+ $this->assertTrue(empty($entity->{$this->field_name}), t('Insert: missing field results in no value saved'));
// Insert: Field is NULL.
+ field_cache_clear();
+ $entity = clone($entity_init);
$entity->{$this->field_name} = NULL;
field_attach_insert($entity_type, $entity);
- field_attach_load($entity_type, array(0 => $entity));
- $this->assertTrue($entity->{$this->field_name} == NULL, 'NULL field results in no inserts');
- // Add some real data
- $value = 5;
- $entity->{$this->field_name} = array(0 => array('value' => $value));
+ $entity = clone($entity_init);
+ field_attach_load($entity_type, array($entity->ftid => $entity));
+ $this->assertTrue(empty($entity->{$this->field_name}), t('Insert: NULL field results in no value saved'));
+
+ // Add some real data.
+ field_cache_clear();
+ $entity = clone($entity_init);
+ $values = array(0 => array('value' => mt_rand(1, 127)));
+ $entity->{$this->field_name} = $values;
field_attach_insert($entity_type, $entity);
- $entity->{$this->field_name} = NULL;
- field_attach_load($entity_type, array(0 => $entity));
- $this->assertTrue($entity->{$this->field_name}[0]['value'] == $value, 'Field data saved');
+
+ $entity = clone($entity_init);
+ field_attach_load($entity_type, array($entity->ftid => $entity));
+ $this->assertEqual($entity->{$this->field_name}, $values, t('Field data saved'));
// Update: Field is missing. Data should survive.
- unset($entity->{$this->field_name});
+ field_cache_clear();
+ $entity = clone($entity_init);
field_attach_update($entity_type, $entity);
- $entity->{$this->field_name} = NULL;
- field_attach_load($entity_type, array(0 => $entity));
- $this->assertEqual($entity->{$this->field_name}[0]['value'], $value, 'Field missing data survives');
+
+ $entity = clone($entity_init);
+ field_attach_load($entity_type, array($entity->ftid => $entity));
+ $this->assertEqual($entity->{$this->field_name}, $values, t('Update: missing field leaves existing values in place'));
// Update: Field is NULL. Data should be wiped.
+ field_cache_clear();
+ $entity = clone($entity_init);
$entity->{$this->field_name} = NULL;
field_attach_update($entity_type, $entity);
- field_attach_load($entity_type, array(0 => $entity));
- $this->assertTrue($entity->{$this->field_name} == NULL, 'NULL field update');
+
+ $entity = clone($entity_init);
+ field_attach_load($entity_type, array($entity->ftid => $entity));
+ $this->assertTrue(empty($entity->{$this->field_name}), t('Update: NULL field removes existing values'));
+ }
+
+ /**
+ * Test insert with missing or NULL fields, with default value.
+ */
+ function testFieldAttachSaveMissingDataDefaultValue() {
+ // Add a default value.
+ $this->instance['default_value_function'] = 'field_test_default_value';
+ field_update_instance($this->instance);
+
+ $entity_type = 'test_entity';
+ $entity_init = field_test_create_stub_entity();
+
+ // Insert: Field is NULL.
+ $entity = clone($entity_init);
+ $entity->{$this->field_name} = NULL;
+ field_attach_insert($entity_type, $entity);
+
+ $entity = clone($entity_init);
+ field_attach_load($entity_type, array($entity->ftid => $entity));
+ $this->assertTrue(empty($entity->{$this->field_name}), t('Insert: NULL field results in no value saved'));
+
+ // Insert: Field is missing.
+ field_cache_clear();
+ $entity = clone($entity_init);
+ field_attach_insert($entity_type, $entity);
+
+ $entity = clone($entity_init);
+ field_attach_load($entity_type, array($entity->ftid => $entity));
+ $values = field_test_default_value($entity_type, $entity, $this->field, $this->instance);
+ $this->assertEqual($entity->{$this->field_name}, $values, t('Insert: missing field results in default value saved'));
}
function testFieldAttachViewAndPreprocess() {