diff options
Diffstat (limited to 'modules/simpletest/tests/common.test')
-rw-r--r-- | modules/simpletest/tests/common.test | 80 |
1 files changed, 69 insertions, 11 deletions
diff --git a/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test index e1a45dad2..156bb8fd8 100644 --- a/modules/simpletest/tests/common.test +++ b/modules/simpletest/tests/common.test @@ -1460,29 +1460,87 @@ class DrupalDataApiTest extends DrupalWebTestCase { } function setUp() { - parent::setUp('taxonomy'); + parent::setUp('database_test'); } /** * Test the drupal_write_record() API function. */ function testDrupalWriteRecord() { - // Insert an object record for a table with a single-field primary key. - $vocabulary = new stdClass(); - $vocabulary->name = 'test'; - $insert_result = drupal_write_record('taxonomy_vocabulary', $vocabulary); + // Insert a record - no columns allow NULL values. + $person = new stdClass(); + $person->name = 'John'; + $person->unknown_column = 123; + $insert_result = drupal_write_record('test', $person); $this->assertTrue($insert_result == SAVED_NEW, t('Correct value returned when a record is inserted with drupal_write_record() for a table with a single-field primary key.')); - $this->assertTrue(isset($vocabulary->vid), t('Primary key is set on record created with drupal_write_record().')); - - // Update the initial record after changing a property. - $vocabulary->name = 'testing'; - $update_result = drupal_write_record('taxonomy_vocabulary', $vocabulary, array('vid')); + $this->assertTrue(isset($person->id), t('Primary key is set on record created with drupal_write_record().')); + $this->assertIdentical($person->age, 0, t('Age field set to default value.')); + $this->assertIdentical($person->job, 'Undefined', t('Job field set to default value.')); + + // Verify that the record was inserted. + $result = db_query("SELECT * FROM {test} WHERE id = :id", array(':id' => $person->id))->fetchObject(); + $this->assertIdentical($result->name, 'John', t('Name field set.')); + $this->assertIdentical($result->age, '0', t('Age field set to default value.')); + $this->assertIdentical($result->job, 'Undefined', t('Job field set to default value.')); + $this->assertFalse(isset($result->unknown_column), t('Unknown column was ignored.')); + + // Update the newly created record. + $person->name = 'Peter'; + $person->age = 27; + $person->job = NULL; + $update_result = drupal_write_record('test', $person, array('id')); $this->assertTrue($update_result == SAVED_UPDATED, t('Correct value returned when a record updated with drupal_write_record() for table with single-field primary key.')); + // Verify that the record was updated. + $result = db_query("SELECT * FROM {test} WHERE id = :id", array(':id' => $person->id))->fetchObject(); + $this->assertIdentical($result->name, 'Peter', t('Name field set.')); + $this->assertIdentical($result->age, '27', t('Age field set.')); + $this->assertIdentical($result->job, '', t('Job field set and cast to string.')); + + // Try to insert NULL in columns that does not allow this. + $person = new stdClass(); + $person->name = 'Ringo'; + $person->age = NULL; + $person->job = NULL; + $insert_result = drupal_write_record('test', $person); + $this->assertTrue(isset($person->id), t('Primary key is set on record created with drupal_write_record().')); + $result = db_query("SELECT * FROM {test} WHERE id = :id", array(':id' => $person->id))->fetchObject(); + $this->assertIdentical($result->name, 'Ringo', t('Name field set.')); + $this->assertIdentical($result->age, '0', t('Age field set.')); + $this->assertIdentical($result->job, '', t('Job field set.')); + + // Insert a record - the "age" column allows NULL. + $person = new stdClass(); + $person->name = 'Paul'; + $person->age = NULL; + $insert_result = drupal_write_record('test_null', $person); + $this->assertTrue(isset($person->id), t('Primary key is set on record created with drupal_write_record().')); + $result = db_query("SELECT * FROM {test_null} WHERE id = :id", array(':id' => $person->id))->fetchObject(); + $this->assertIdentical($result->name, 'Paul', t('Name field set.')); + $this->assertIdentical($result->age, NULL, t('Age field set.')); + + // Insert a record - do not specify the value of a column that allows NULL. + $person = new stdClass(); + $person->name = 'Meredith'; + $insert_result = drupal_write_record('test_null', $person); + $this->assertTrue(isset($person->id), t('Primary key is set on record created with drupal_write_record().')); + $this->assertIdentical($person->age, 0, t('Age field set to default value.')); + $result = db_query("SELECT * FROM {test_null} WHERE id = :id", array(':id' => $person->id))->fetchObject(); + $this->assertIdentical($result->name, 'Meredith', t('Name field set.')); + $this->assertIdentical($result->age, '0', t('Age field set to default value.')); + + // Update the newly created record. + $person->name = 'Mary'; + $person->age = NULL; + $update_result = drupal_write_record('test_null', $person, array('id')); + $result = db_query("SELECT * FROM {test_null} WHERE id = :id", array(':id' => $person->id))->fetchObject(); + $this->assertIdentical($result->name, 'Mary', t('Name field set.')); + $this->assertIdentical($result->age, NULL, t('Age field set.')); + // Run an update query where no field values are changed. The database // layer should return zero for number of affected rows, but // db_write_record() should still return SAVED_UPDATED. - $update_result = drupal_write_record('taxonomy_vocabulary', $vocabulary, array('vid')); + $update_result = drupal_write_record('test_null', $person, array('id')); $this->assertTrue($update_result == SAVED_UPDATED, t('Correct value returned when a valid update is run without changing any values.')); // Insert an object record for a table with a multi-field primary key. |