|
|
|
@ -252,7 +252,7 @@ class DatabaseFetchTestCase extends DatabaseTestCase {
|
|
|
|
|
*/
|
|
|
|
|
function testQueryFetchDefault() {
|
|
|
|
|
$records = array();
|
|
|
|
|
$result = db_query("SELECT name FROM {test} WHERE age = :age", array(':age' => 25));
|
|
|
|
|
$result = db_query('SELECT name FROM {test} WHERE age = :age', array(':age' => 25));
|
|
|
|
|
$this->assertTrue($result instanceof DatabaseStatementInterface, t('Result set is a Drupal statement object.'));
|
|
|
|
|
foreach ($result as $record) {
|
|
|
|
|
$records[] = $record;
|
|
|
|
@ -268,7 +268,7 @@ class DatabaseFetchTestCase extends DatabaseTestCase {
|
|
|
|
|
*/
|
|
|
|
|
function testQueryFetchObject() {
|
|
|
|
|
$records = array();
|
|
|
|
|
$result = db_query("SELECT name FROM {test} WHERE age = :age", array(':age' => 25), array('fetch' => PDO::FETCH_OBJ));
|
|
|
|
|
$result = db_query('SELECT name FROM {test} WHERE age = :age', array(':age' => 25), array('fetch' => PDO::FETCH_OBJ));
|
|
|
|
|
foreach ($result as $record) {
|
|
|
|
|
$records[] = $record;
|
|
|
|
|
$this->assertTrue(is_object($record), t('Record is an object.'));
|
|
|
|
@ -283,7 +283,7 @@ class DatabaseFetchTestCase extends DatabaseTestCase {
|
|
|
|
|
*/
|
|
|
|
|
function testQueryFetchArray() {
|
|
|
|
|
$records = array();
|
|
|
|
|
$result = db_query("SELECT name FROM {test} WHERE age = :age", array(':age' => 25), array('fetch' => PDO::FETCH_ASSOC));
|
|
|
|
|
$result = db_query('SELECT name FROM {test} WHERE age = :age', array(':age' => 25), array('fetch' => PDO::FETCH_ASSOC));
|
|
|
|
|
foreach ($result as $record) {
|
|
|
|
|
$records[] = $record;
|
|
|
|
|
if ($this->assertTrue(is_array($record), t('Record is an array.'))) {
|
|
|
|
@ -301,7 +301,7 @@ class DatabaseFetchTestCase extends DatabaseTestCase {
|
|
|
|
|
*/
|
|
|
|
|
function testQueryFetchClass() {
|
|
|
|
|
$records = array();
|
|
|
|
|
$result = db_query("SELECT name FROM {test} WHERE age = :age", array(':age' => 25), array('fetch' => 'FakeRecord'));
|
|
|
|
|
$result = db_query('SELECT name FROM {test} WHERE age = :age', array(':age' => 25), array('fetch' => 'FakeRecord'));
|
|
|
|
|
foreach ($result as $record) {
|
|
|
|
|
$records[] = $record;
|
|
|
|
|
if ($this->assertTrue($record instanceof FakeRecord, t('Record is an object of class FakeRecord.'))) {
|
|
|
|
@ -335,7 +335,7 @@ class DatabaseFetch2TestCase extends DatabaseTestCase {
|
|
|
|
|
// Confirm that we can fetch a record into an indexed array explicitly.
|
|
|
|
|
function testQueryFetchNum() {
|
|
|
|
|
$records = array();
|
|
|
|
|
$result = db_query("SELECT name FROM {test} WHERE age = :age", array(':age' => 25), array('fetch' => PDO::FETCH_NUM));
|
|
|
|
|
$result = db_query('SELECT name FROM {test} WHERE age = :age', array(':age' => 25), array('fetch' => PDO::FETCH_NUM));
|
|
|
|
|
foreach ($result as $record) {
|
|
|
|
|
$records[] = $record;
|
|
|
|
|
if ($this->assertTrue(is_array($record), t('Record is an array.'))) {
|
|
|
|
@ -351,7 +351,7 @@ class DatabaseFetch2TestCase extends DatabaseTestCase {
|
|
|
|
|
*/
|
|
|
|
|
function testQueryFetchBoth() {
|
|
|
|
|
$records = array();
|
|
|
|
|
$result = db_query("SELECT name FROM {test} WHERE age = :age", array(':age' => 25), array('fetch' => PDO::FETCH_BOTH));
|
|
|
|
|
$result = db_query('SELECT name FROM {test} WHERE age = :age', array(':age' => 25), array('fetch' => PDO::FETCH_BOTH));
|
|
|
|
|
foreach ($result as $record) {
|
|
|
|
|
$records[] = $record;
|
|
|
|
|
if ($this->assertTrue(is_array($record), t('Record is an array.'))) {
|
|
|
|
@ -368,11 +368,11 @@ class DatabaseFetch2TestCase extends DatabaseTestCase {
|
|
|
|
|
*/
|
|
|
|
|
function testQueryFetchCol() {
|
|
|
|
|
$records = array();
|
|
|
|
|
$result = db_query("SELECT name FROM {test} WHERE age > :age", array(':age' => 25));
|
|
|
|
|
$result = db_query('SELECT name FROM {test} WHERE age > :age', array(':age' => 25));
|
|
|
|
|
$column = $result->fetchCol();
|
|
|
|
|
$this->assertIdentical(count($column), 3, t('fetchCol() returns the right number of records.'));
|
|
|
|
|
|
|
|
|
|
$result = db_query("SELECT name FROM {test} WHERE age > :age", array(':age' => 25));
|
|
|
|
|
$result = db_query('SELECT name FROM {test} WHERE age > :age', array(':age' => 25));
|
|
|
|
|
$i = 0;
|
|
|
|
|
foreach ($result as $record) {
|
|
|
|
|
$this->assertIdentical($record->name, $column[$i++], t('Column matches direct accesss.'));
|
|
|
|
@ -397,7 +397,7 @@ class DatabaseInsertTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test the very basic insert functionality.
|
|
|
|
|
*/
|
|
|
|
|
function testSimpleInsert() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
|
|
|
|
|
$query = db_insert('test');
|
|
|
|
|
$query->fields(array(
|
|
|
|
@ -406,9 +406,9 @@ class DatabaseInsertTestCase extends DatabaseTestCase {
|
|
|
|
|
));
|
|
|
|
|
$query->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
$this->assertIdentical($num_records_before + 1, (int)$num_records_after, t('Record inserts correctly.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Yoko'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Yoko'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '29', t('Can retrieve after inserting.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -416,7 +416,7 @@ class DatabaseInsertTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test that we can insert multiple records in one query object.
|
|
|
|
|
*/
|
|
|
|
|
function testMultiInsert() {
|
|
|
|
|
$num_records_before = (int) db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_before = (int) db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
|
|
|
|
|
$query = db_insert('test');
|
|
|
|
|
$query->fields(array(
|
|
|
|
@ -435,13 +435,13 @@ class DatabaseInsertTestCase extends DatabaseTestCase {
|
|
|
|
|
$query->values(array('Moe', '32'));
|
|
|
|
|
$query->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = (int) db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_after = (int) db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
$this->assertIdentical($num_records_before + 3, $num_records_after, t('Record inserts correctly.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Larry'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Larry'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '30', t('Can retrieve after inserting.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Curly'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Curly'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '31', t('Can retrieve after inserting.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Moe'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Moe'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '32', t('Can retrieve after inserting.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -449,7 +449,7 @@ class DatabaseInsertTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test that an insert object can be reused with new data after it executes.
|
|
|
|
|
*/
|
|
|
|
|
function testRepeatedInsert() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
|
|
|
|
|
$query = db_insert('test');
|
|
|
|
|
|
|
|
|
@ -470,13 +470,13 @@ class DatabaseInsertTestCase extends DatabaseTestCase {
|
|
|
|
|
$query->values(array('Moe', '32'));
|
|
|
|
|
$query->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
$this->assertIdentical((int) $num_records_before + 3, (int) $num_records_after, t('Record inserts correctly.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Larry'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Larry'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '30', t('Can retrieve after inserting.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Curly'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Curly'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '31', t('Can retrieve after inserting.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Moe'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Moe'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '32', t('Can retrieve after inserting.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -492,11 +492,11 @@ class DatabaseInsertTestCase extends DatabaseTestCase {
|
|
|
|
|
->values(array('Curly', '31'))
|
|
|
|
|
->values(array('Moe', '32'))
|
|
|
|
|
->execute();
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Larry'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Larry'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '30', t('Can retrieve after inserting.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Curly'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Curly'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '31', t('Can retrieve after inserting.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Moe'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Moe'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '32', t('Can retrieve after inserting.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -504,7 +504,8 @@ class DatabaseInsertTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test that inserts return the proper auto-increment ID.
|
|
|
|
|
*/
|
|
|
|
|
function testInsertLastInsertID() {
|
|
|
|
|
$id = db_insert('test')->fields(array(
|
|
|
|
|
$id = db_insert('test')
|
|
|
|
|
->fields(array(
|
|
|
|
|
'name' => 'Larry',
|
|
|
|
|
'age' => '30',
|
|
|
|
|
))
|
|
|
|
@ -533,9 +534,10 @@ class DatabaseInsertLOBTestCase extends DatabaseTestCase {
|
|
|
|
|
function testInsertOneBlob() {
|
|
|
|
|
$data = "This is\000a test.";
|
|
|
|
|
$this->assertTrue(strlen($data) === 15, t('Test data contains a NULL.'));
|
|
|
|
|
$id = db_insert('test_one_blob')->fields(array('blob1' => $data))->execute();
|
|
|
|
|
$res = db_query('SELECT * FROM {test_one_blob} WHERE id = :id', array(':id' => $id));
|
|
|
|
|
$r = db_fetch_array($res);
|
|
|
|
|
$id = db_insert('test_one_blob')
|
|
|
|
|
->fields(array('blob1' => $data))
|
|
|
|
|
->execute();
|
|
|
|
|
$r = db_query('SELECT * FROM {test_one_blob} WHERE id = :id', array(':id' => $id))->fetchAssoc();
|
|
|
|
|
$this->assertTrue($r['blob1'] === $data, t('Can insert a blob: id @id, @data.', array('@id' => $id, '@data' => serialize($r))));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -543,13 +545,13 @@ class DatabaseInsertLOBTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test that we can insert multiple blob fields in the same query.
|
|
|
|
|
*/
|
|
|
|
|
function testInsertMultipleBlob() {
|
|
|
|
|
$id = db_insert('test_two_blobs')->fields(array(
|
|
|
|
|
'blob1' => 'This is',
|
|
|
|
|
'blob2' => 'a test',
|
|
|
|
|
$id = db_insert('test_two_blobs')
|
|
|
|
|
->fields(array(
|
|
|
|
|
'blob1' => 'This is',
|
|
|
|
|
'blob2' => 'a test',
|
|
|
|
|
))
|
|
|
|
|
->execute();
|
|
|
|
|
$res = db_query('SELECT * FROM {test_two_blobs} WHERE id = %d', $id);
|
|
|
|
|
$r = db_fetch_array($res);
|
|
|
|
|
->execute();
|
|
|
|
|
$r = db_query('SELECT * FROM {test_two_blobs} WHERE id = :id', array(':id' => $id))->fetchAssoc();
|
|
|
|
|
$this->assertTrue($r['blob1'] === 'This is' && $r['blob2'] === 'a test', t('Can insert multiple blobs per row.'));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -576,7 +578,7 @@ class DatabaseInsertDefaultsTestCase extends DatabaseTestCase {
|
|
|
|
|
|
|
|
|
|
$schema = drupal_get_schema('test');
|
|
|
|
|
|
|
|
|
|
$job = db_query("SELECT job FROM {test} WHERE id = :id", array(':id' => $id))->fetchField();
|
|
|
|
|
$job = db_query('SELECT job FROM {test} WHERE id = :id', array(':id' => $id))->fetchField();
|
|
|
|
|
$this->assertEqual($job, $schema['fields']['job']['default'], t('Default field value is set.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -584,12 +586,12 @@ class DatabaseInsertDefaultsTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test that no action will be preformed if no fields are specified.
|
|
|
|
|
*/
|
|
|
|
|
function testDefaultEmptyInsert() {
|
|
|
|
|
$num_records_before = (int) db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_before = (int) db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
|
|
|
|
|
$result = db_insert('test')->execute();
|
|
|
|
|
$this->assertNull($result, t('Return NULL as no fields are specified.'));
|
|
|
|
|
|
|
|
|
|
$num_records_after = (int) db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_after = (int) db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
$this->assertIdentical($num_records_before, $num_records_after, t('Do nothing as no fields are specified.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -597,12 +599,14 @@ class DatabaseInsertDefaultsTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test that we can insert fields with values and defaults in the same query.
|
|
|
|
|
*/
|
|
|
|
|
function testDefaultInsertWithFields() {
|
|
|
|
|
$query = db_insert('test')->fields(array('name' => 'Bob'))->useDefaults(array('job'));
|
|
|
|
|
$query = db_insert('test')
|
|
|
|
|
->fields(array('name' => 'Bob'))
|
|
|
|
|
->useDefaults(array('job'));
|
|
|
|
|
$id = $query->execute();
|
|
|
|
|
|
|
|
|
|
$schema = drupal_get_schema('test');
|
|
|
|
|
|
|
|
|
|
$job = db_query("SELECT job FROM {test} WHERE id = :id", array(':id' => $id))->fetchField();
|
|
|
|
|
$job = db_query('SELECT job FROM {test} WHERE id = :id', array(':id' => $id))->fetchField();
|
|
|
|
|
$this->assertEqual($job, $schema['fields']['job']['default'], t('Default field value is set.'));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -624,10 +628,13 @@ class DatabaseUpdateTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can update a single record successfully.
|
|
|
|
|
*/
|
|
|
|
|
function testSimpleUpdate() {
|
|
|
|
|
$num_updated = db_update('test')->fields(array('name' => 'Tiffany'))->condition('id', 1)->execute();
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->fields(array('name' => 'Tiffany'))
|
|
|
|
|
->condition('id', 1)
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 1, t('Updated 1 record.'));
|
|
|
|
|
|
|
|
|
|
$saved_name = db_query("SELECT name FROM {test} WHERE id = :id", array(':id' => 1))->fetchField();
|
|
|
|
|
$saved_name = db_query('SELECT name FROM {test} WHERE id = :id', array(':id' => 1))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_name, 'Tiffany', t('Updated name successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -635,10 +642,13 @@ class DatabaseUpdateTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can update a multiple records successfully.
|
|
|
|
|
*/
|
|
|
|
|
function testMultiUpdate() {
|
|
|
|
|
$num_updated = db_update('test')->fields(array('job' => 'Musician'))->condition('job', 'Singer')->execute();
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->fields(array('job' => 'Musician'))
|
|
|
|
|
->condition('job', 'Singer')
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 2, t('Updated 2 records.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '2', t('Updated fields successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -646,10 +656,13 @@ class DatabaseUpdateTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can update a multiple records with a non-equality condition.
|
|
|
|
|
*/
|
|
|
|
|
function testMultiGTUpdate() {
|
|
|
|
|
$num_updated = db_update('test')->fields(array('job' => 'Musician'))->condition('age', 26, '>')->execute();
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->fields(array('job' => 'Musician'))
|
|
|
|
|
->condition('age', 26, '>')
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 2, t('Updated 2 records.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '2', t('Updated fields successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -657,10 +670,13 @@ class DatabaseUpdateTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can update a multiple records with a where call.
|
|
|
|
|
*/
|
|
|
|
|
function testWhereUpdate() {
|
|
|
|
|
$num_updated = db_update('test')->fields(array('job' => 'Musician'))->where('age > :age', array(':age' => 26))->execute();
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->fields(array('job' => 'Musician'))
|
|
|
|
|
->where('age > :age', array(':age' => 26))
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 2, t('Updated 2 records.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '2', t('Updated fields successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -668,11 +684,14 @@ class DatabaseUpdateTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can stack condition and where calls.
|
|
|
|
|
*/
|
|
|
|
|
function testWhereAndConditionUpdate() {
|
|
|
|
|
$update = db_update('test')->fields(array('job' => 'Musician'))->where('age > :age', array(':age' => 26))->condition('name', 'Ringo');
|
|
|
|
|
$update = db_update('test')
|
|
|
|
|
->fields(array('job' => 'Musician'))
|
|
|
|
|
->where('age > :age', array(':age' => 26))
|
|
|
|
|
->condition('name', 'Ringo');
|
|
|
|
|
$num_updated = $update->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 1, t('Updated 1 record.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '1', t('Updated fields successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -704,7 +723,7 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
|
|
|
|
|
$num_updated = $update->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 2, t('Updated 2 records.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '2', t('Updated fields successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -712,12 +731,13 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test WHERE IN clauses.
|
|
|
|
|
*/
|
|
|
|
|
function testInConditionUpdate() {
|
|
|
|
|
$num_updated = db_update('test')->fields(array('job' => 'Musician'))
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->fields(array('job' => 'Musician'))
|
|
|
|
|
->condition('name', array('John', 'Paul'), 'IN')
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 2, t('Updated 2 records.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '2', t('Updated fields successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -725,12 +745,13 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test WHERE NOT IN clauses.
|
|
|
|
|
*/
|
|
|
|
|
function testNotInConditionUpdate() {
|
|
|
|
|
$num_updated = db_update('test')->fields(array('job' => 'Musician'))
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->fields(array('job' => 'Musician'))
|
|
|
|
|
->condition('name', array('John', 'Paul', 'George'), 'NOT IN')
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 1, t('Updated 1 record.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '1', t('Updated fields successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -738,12 +759,13 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test BETWEEN conditional clauses.
|
|
|
|
|
*/
|
|
|
|
|
function testBetweenConditionUpdate() {
|
|
|
|
|
$num_updated = db_update('test')->fields(array('job' => 'Musician'))
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->fields(array('job' => 'Musician'))
|
|
|
|
|
->condition('age', array(25, 26), 'BETWEEN')
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 2, t('Updated 2 records.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '2', t('Updated fields successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -751,12 +773,13 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test LIKE conditionals.
|
|
|
|
|
*/
|
|
|
|
|
function testLikeConditionUpdate() {
|
|
|
|
|
$num_updated = db_update('test')->fields(array('job' => 'Musician'))
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->fields(array('job' => 'Musician'))
|
|
|
|
|
->condition('name', '%ge%', 'LIKE')
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 1, t('Updated 1 record.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '1', t('Updated fields successfully.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -764,7 +787,7 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test update with expression values.
|
|
|
|
|
*/
|
|
|
|
|
function testUpdateExpression() {
|
|
|
|
|
$before_age = db_query("SELECT age FROM {test} WHERE name = 'Ringo'")->fetchField();
|
|
|
|
|
$before_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'))->fetchField();
|
|
|
|
|
$GLOBALS['larry_test'] = 1;
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->condition('name', 'Ringo')
|
|
|
|
@ -773,10 +796,10 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 1, t('Updated 1 record.'));
|
|
|
|
|
|
|
|
|
|
$num_matches = db_query("SELECT COUNT(*) FROM {test} WHERE job = :job", array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$num_matches = db_query('SELECT COUNT(*) FROM {test} WHERE job = :job', array(':job' => 'Musician'))->fetchField();
|
|
|
|
|
$this->assertIdentical($num_matches, '1', t('Updated fields successfully.'));
|
|
|
|
|
|
|
|
|
|
$person = db_query("SELECT * FROM {test} WHERE name = :name", array(':name' => 'Ringo'))->fetch();
|
|
|
|
|
$person = db_query('SELECT * FROM {test} WHERE name = :name', array(':name' => 'Ringo'))->fetch();
|
|
|
|
|
$this->assertEqual($person->name, 'Ringo', t('Name set correctly.'));
|
|
|
|
|
$this->assertEqual($person->age, $before_age + 4, t('Age set correctly.'));
|
|
|
|
|
$this->assertEqual($person->job, 'Musician', t('Job set correctly.'));
|
|
|
|
@ -787,14 +810,14 @@ class DatabaseUpdateComplexTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test update with only expression values.
|
|
|
|
|
*/
|
|
|
|
|
function testUpdateOnlyExpression() {
|
|
|
|
|
$before_age = db_query("SELECT age FROM {test} WHERE name = 'Ringo'")->fetchField();
|
|
|
|
|
$before_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'))->fetchField();
|
|
|
|
|
$num_updated = db_update('test')
|
|
|
|
|
->condition('name', 'Ringo')
|
|
|
|
|
->expression('age', 'age + :age', array(':age' => 4))
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_updated, 1, t('Updated 1 record.'));
|
|
|
|
|
|
|
|
|
|
$after_age = db_query("SELECT age FROM {test} WHERE name = 'Ringo'")->fetchField();
|
|
|
|
|
$after_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'))->fetchField();
|
|
|
|
|
$this->assertEqual($before_age + 4, $after_age, t('Age updated correctly'));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -818,13 +841,17 @@ class DatabaseUpdateLOBTestCase extends DatabaseTestCase {
|
|
|
|
|
function testUpdateOneBlob() {
|
|
|
|
|
$data = "This is\000a test.";
|
|
|
|
|
$this->assertTrue(strlen($data) === 15, t('Test data contains a NULL.'));
|
|
|
|
|
$id = db_insert('test_one_blob')->fields(array('blob1' => $data))->execute();
|
|
|
|
|
$id = db_insert('test_one_blob')
|
|
|
|
|
->fields(array('blob1' => $data))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$data .= $data;
|
|
|
|
|
db_update('test_one_blob')->condition('id', $id)->fields(array('blob1' => $data))->execute();
|
|
|
|
|
db_update('test_one_blob')
|
|
|
|
|
->condition('id', $id)
|
|
|
|
|
->fields(array('blob1' => $data))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$res = db_query('SELECT * FROM {test_one_blob} WHERE id = %d', $id);
|
|
|
|
|
$r = db_fetch_array($res);
|
|
|
|
|
$r = db_query('SELECT * FROM {test_one_blob} WHERE id = :id', array(':id' => $id))->fetchAssoc();
|
|
|
|
|
$this->assertTrue($r['blob1'] === $data, t('Can update a blob: id @id, @data.', array('@id' => $id, '@data' => serialize($r))));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -832,16 +859,19 @@ class DatabaseUpdateLOBTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can update two blob columns in the same table.
|
|
|
|
|
*/
|
|
|
|
|
function testUpdateMultipleBlob() {
|
|
|
|
|
$id = db_insert('test_two_blobs')->fields(array(
|
|
|
|
|
$id = db_insert('test_two_blobs')
|
|
|
|
|
->fields(array(
|
|
|
|
|
'blob1' => 'This is',
|
|
|
|
|
'blob2' => 'a test')
|
|
|
|
|
)
|
|
|
|
|
'blob2' => 'a test',
|
|
|
|
|
))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
db_update('test_two_blobs')->condition('id', $id)->fields(array('blob1' => 'and so', 'blob2' => 'is this'))->execute();
|
|
|
|
|
db_update('test_two_blobs')
|
|
|
|
|
->condition('id', $id)
|
|
|
|
|
->fields(array('blob1' => 'and so', 'blob2' => 'is this'))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$res = db_query('SELECT * FROM {test_two_blobs} WHERE id = %d', $id);
|
|
|
|
|
$r = db_fetch_array($res);
|
|
|
|
|
$r = db_query('SELECT * FROM {test_two_blobs} WHERE id = :id', array(':id' => $id))->fetchAssoc();
|
|
|
|
|
$this->assertTrue($r['blob1'] === 'and so' && $r['blob2'] === 'is this', t('Can update multiple blobs per row.'));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -871,12 +901,14 @@ class DatabaseDeleteTruncateTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can delete a single record successfully.
|
|
|
|
|
*/
|
|
|
|
|
function testSimpleDelete() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
|
|
|
|
|
$num_deleted = db_delete('test')->condition('id', 1)->execute();
|
|
|
|
|
$num_deleted = db_delete('test')
|
|
|
|
|
->condition('id', 1)
|
|
|
|
|
->execute();
|
|
|
|
|
$this->assertIdentical($num_deleted, 1, t('Deleted 1 record.'));
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
$this->assertEqual($num_records_before, $num_records_after + $num_deleted, t('Deletion adds up.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -911,7 +943,7 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can merge-insert a record successfully.
|
|
|
|
|
*/
|
|
|
|
|
function testMergeInsert() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
|
|
|
|
|
db_merge('test_people')
|
|
|
|
|
->key(array('job' => 'Presenter'))
|
|
|
|
@ -921,10 +953,10 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
$this->assertEqual($num_records_before + 1, $num_records_after, t('Merge inserted properly.'));
|
|
|
|
|
|
|
|
|
|
$person = db_query("SELECT * FROM {test_people} WHERE job = :job", array(':job' => 'Presenter'))->fetch();
|
|
|
|
|
$person = db_query('SELECT * FROM {test_people} WHERE job = :job', array(':job' => 'Presenter'))->fetch();
|
|
|
|
|
$this->assertEqual($person->name, 'Tiffany', t('Name set correctly.'));
|
|
|
|
|
$this->assertEqual($person->age, 31, t('Age set correctly.'));
|
|
|
|
|
$this->assertEqual($person->job, 'Presenter', t('Job set correctly.'));
|
|
|
|
@ -934,14 +966,20 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can merge-update a record successfully.
|
|
|
|
|
*/
|
|
|
|
|
function testMergeUpdate() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
|
|
|
|
|
db_merge('test_people')->key(array('job' => 'Speaker'))->fields(array('age' => 31, 'name' => 'Tiffany'))->execute();
|
|
|
|
|
db_merge('test_people')
|
|
|
|
|
->key(array('job' => 'Speaker'))
|
|
|
|
|
->fields(array(
|
|
|
|
|
'age' => 31,
|
|
|
|
|
'name' => 'Tiffany',
|
|
|
|
|
))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
$this->assertEqual($num_records_before, $num_records_after, t('Merge updated properly.'));
|
|
|
|
|
|
|
|
|
|
$person = db_query("SELECT * FROM {test_people} WHERE job = :job", array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$person = db_query('SELECT * FROM {test_people} WHERE job = :job', array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$this->assertEqual($person->name, 'Tiffany', t('Name set correctly.'));
|
|
|
|
|
$this->assertEqual($person->age, 31, t('Age set correctly.'));
|
|
|
|
|
$this->assertEqual($person->job, 'Speaker', t('Job set correctly.'));
|
|
|
|
@ -951,14 +989,21 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can merge-update a record successfully, with exclusion.
|
|
|
|
|
*/
|
|
|
|
|
function testMergeUpdateExcept() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
|
|
|
|
|
db_merge('test_people')->key(array('job' => 'Speaker'))->fields(array('age' => 31, 'name' => 'Tiffany'))->updateExcept('age')->execute();
|
|
|
|
|
db_merge('test_people')
|
|
|
|
|
->key(array('job' => 'Speaker'))
|
|
|
|
|
->fields(array(
|
|
|
|
|
'age' => 31,
|
|
|
|
|
'name' => 'Tiffany',
|
|
|
|
|
))
|
|
|
|
|
->updateExcept('age')
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
$this->assertEqual($num_records_before, $num_records_after, t('Merge updated properly.'));
|
|
|
|
|
|
|
|
|
|
$person = db_query("SELECT * FROM {test_people} WHERE job = :job", array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$person = db_query('SELECT * FROM {test_people} WHERE job = :job', array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$this->assertEqual($person->name, 'Tiffany', t('Name set correctly.'));
|
|
|
|
|
$this->assertEqual($person->age, 30, t('Age skipped correctly.'));
|
|
|
|
|
$this->assertEqual($person->job, 'Speaker', t('Job set correctly.'));
|
|
|
|
@ -968,14 +1013,21 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can merge-update a record successfully, with alternate replacement.
|
|
|
|
|
*/
|
|
|
|
|
function testMergeUpdateExplicit() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
|
|
|
|
|
db_merge('test_people')->key(array('job' => 'Speaker'))->fields(array('age' => 31, 'name' => 'Tiffany'))->update(array('name' => 'Joe'))->execute();
|
|
|
|
|
db_merge('test_people')
|
|
|
|
|
->key(array('job' => 'Speaker'))
|
|
|
|
|
->fields(array(
|
|
|
|
|
'age' => 31,
|
|
|
|
|
'name' => 'Tiffany',
|
|
|
|
|
))
|
|
|
|
|
->update(array('name' => 'Joe'))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
$this->assertEqual($num_records_before, $num_records_after, t('Merge updated properly.'));
|
|
|
|
|
|
|
|
|
|
$person = db_query("SELECT * FROM {test_people} WHERE job = :job", array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$person = db_query('SELECT * FROM {test_people} WHERE job = :job', array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$this->assertEqual($person->name, 'Joe', t('Name set correctly.'));
|
|
|
|
|
$this->assertEqual($person->age, 30, t('Age skipped correctly.'));
|
|
|
|
|
$this->assertEqual($person->job, 'Speaker', t('Job set correctly.'));
|
|
|
|
@ -985,9 +1037,9 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can merge-update a record successfully, with expressions.
|
|
|
|
|
*/
|
|
|
|
|
function testMergeUpdateExpression() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
|
|
|
|
|
$age_before = db_query("SELECT age FROM {test_people} WHERE job = 'Speaker'")->fetchField();
|
|
|
|
|
$age_before = db_query('SELECT age FROM {test_people} WHERE job = :job', array(':job' => 'Speaker'))->fetchField();
|
|
|
|
|
|
|
|
|
|
// This is a very contrived example, as I have no idea why you'd want to
|
|
|
|
|
// change age this way, but that's beside the point.
|
|
|
|
@ -996,14 +1048,17 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
// which is what is supposed to happen.
|
|
|
|
|
db_merge('test_people')
|
|
|
|
|
->key(array('job' => 'Speaker'))
|
|
|
|
|
->fields(array('age' => 31, 'name' => 'Tiffany'))
|
|
|
|
|
->fields(array(
|
|
|
|
|
'age' => 31,
|
|
|
|
|
'name' => 'Tiffany',
|
|
|
|
|
))
|
|
|
|
|
->expression('age', 'age + :age', array(':age' => 4))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
$this->assertEqual($num_records_before, $num_records_after, t('Merge updated properly.'));
|
|
|
|
|
|
|
|
|
|
$person = db_query("SELECT * FROM {test_people} WHERE job = :job", array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$person = db_query('SELECT * FROM {test_people} WHERE job = :job', array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$this->assertEqual($person->name, 'Tiffany', t('Name set correctly.'));
|
|
|
|
|
$this->assertEqual($person->age, $age_before + 4, t('Age updated correctly.'));
|
|
|
|
|
$this->assertEqual($person->job, 'Speaker', t('Job set correctly.'));
|
|
|
|
@ -1013,16 +1068,16 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test that we can merge-insert without any update fields.
|
|
|
|
|
*/
|
|
|
|
|
function testMergeInsertWithoutUpdate() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
|
|
|
|
|
db_merge('test_people')
|
|
|
|
|
->key(array('job' => 'Presenter'))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
$this->assertEqual($num_records_before + 1, $num_records_after, t('Merge inserted properly.'));
|
|
|
|
|
|
|
|
|
|
$person = db_query("SELECT * FROM {test_people} WHERE job = :job", array(':job' => 'Presenter'))->fetch();
|
|
|
|
|
$person = db_query('SELECT * FROM {test_people} WHERE job = :job', array(':job' => 'Presenter'))->fetch();
|
|
|
|
|
$this->assertEqual($person->name, '', t('Name set correctly.'));
|
|
|
|
|
$this->assertEqual($person->age, 0, t('Age set correctly.'));
|
|
|
|
|
$this->assertEqual($person->job, 'Presenter', t('Job set correctly.'));
|
|
|
|
@ -1032,16 +1087,16 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
* Confirm that we can merge-update without any update fields.
|
|
|
|
|
*/
|
|
|
|
|
function testMergeUpdateWithoutUpdate() {
|
|
|
|
|
$num_records_before = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_before = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
|
|
|
|
|
db_merge('test_people')
|
|
|
|
|
->key(array('job' => 'Speaker'))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
$this->assertEqual($num_records_before, $num_records_after, t('Merge skipped properly.'));
|
|
|
|
|
|
|
|
|
|
$person = db_query("SELECT * FROM {test_people} WHERE job = :job", array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$person = db_query('SELECT * FROM {test_people} WHERE job = :job', array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$this->assertEqual($person->name, 'Meredith', t('Name skipped correctly.'));
|
|
|
|
|
$this->assertEqual($person->age, 30, t('Age skipped correctly.'));
|
|
|
|
|
$this->assertEqual($person->job, 'Speaker', t('Job skipped correctly.'));
|
|
|
|
@ -1052,10 +1107,10 @@ class DatabaseMergeTestCase extends DatabaseTestCase {
|
|
|
|
|
->updateExcept(array('age'))
|
|
|
|
|
->execute();
|
|
|
|
|
|
|
|
|
|
$num_records_after = db_query("SELECT COUNT(*) FROM {test_people}")->fetchField();
|
|
|
|
|
$num_records_after = db_query('SELECT COUNT(*) FROM {test_people}')->fetchField();
|
|
|
|
|
$this->assertEqual($num_records_before, $num_records_after, t('Merge skipped properly.'));
|
|
|
|
|
|
|
|
|
|
$person = db_query("SELECT * FROM {test_people} WHERE job = :job", array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$person = db_query('SELECT * FROM {test_people} WHERE job = :job', array(':job' => 'Speaker'))->fetch();
|
|
|
|
|
$this->assertEqual($person->name, 'Meredith', t('Name skipped correctly.'));
|
|
|
|
|
$this->assertEqual($person->age, 30, t('Age skipped correctly.'));
|
|
|
|
|
$this->assertEqual($person->job, 'Speaker', t('Job skipped correctly.'));
|
|
|
|
@ -1634,7 +1689,7 @@ class DatabaseSelectPagerDefaultTestCase extends DatabaseTestCase {
|
|
|
|
|
// information forward to the actual query on the other side of the
|
|
|
|
|
// HTTP request.
|
|
|
|
|
$limit = 2;
|
|
|
|
|
$count = db_query("SELECT COUNT(*) FROM {test}")->fetchField();
|
|
|
|
|
$count = db_query('SELECT COUNT(*) FROM {test}')->fetchField();
|
|
|
|
|
|
|
|
|
|
$correct_number = $limit;
|
|
|
|
|
$num_pages = floor($count / $limit);
|
|
|
|
@ -1668,7 +1723,7 @@ class DatabaseSelectPagerDefaultTestCase extends DatabaseTestCase {
|
|
|
|
|
// information forward to the actual query on the other side of the
|
|
|
|
|
// HTTP request.
|
|
|
|
|
$limit = 2;
|
|
|
|
|
$count = db_query("SELECT COUNT(*) FROM {test_task}")->fetchField();
|
|
|
|
|
$count = db_query('SELECT COUNT(*) FROM {test_task}')->fetchField();
|
|
|
|
|
|
|
|
|
|
$correct_number = $limit;
|
|
|
|
|
$num_pages = floor($count / $limit);
|
|
|
|
@ -2058,7 +2113,7 @@ class DatabaseRegressionTestCase extends DatabaseTestCase {
|
|
|
|
|
'job' => 'Dancer',
|
|
|
|
|
))->execute();
|
|
|
|
|
|
|
|
|
|
$from_database = db_query("SELECT name FROM {test} WHERE name = :name", array(':name' => $name))->fetchField();
|
|
|
|
|
$from_database = db_query('SELECT name FROM {test} WHERE name = :name', array(':name' => $name))->fetchField();
|
|
|
|
|
$this->assertIdentical($name, $from_database, t("The database handles UTF-8 characters cleanly."));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2098,8 +2153,8 @@ class DatabaseLoggingTestCase extends DatabaseTestCase {
|
|
|
|
|
function testEnableLogging() {
|
|
|
|
|
Database::startLog('testing');
|
|
|
|
|
|
|
|
|
|
db_query("SELECT name FROM {test} WHERE age > :age", array(':age' => 25))->fetchCol();
|
|
|
|
|
db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Ringo'))->fetchCol();
|
|
|
|
|
db_query('SELECT name FROM {test} WHERE age > :age', array(':age' => 25))->fetchCol();
|
|
|
|
|
db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'))->fetchCol();
|
|
|
|
|
|
|
|
|
|
$queries = Database::getLog('testing', 'default');
|
|
|
|
|
|
|
|
|
@ -2116,11 +2171,11 @@ class DatabaseLoggingTestCase extends DatabaseTestCase {
|
|
|
|
|
function testEnableMultiLogging() {
|
|
|
|
|
Database::startLog('testing1');
|
|
|
|
|
|
|
|
|
|
db_query("SELECT name FROM {test} WHERE age > :age", array(':age' => 25))->fetchCol();
|
|
|
|
|
db_query('SELECT name FROM {test} WHERE age > :age', array(':age' => 25))->fetchCol();
|
|
|
|
|
|
|
|
|
|
Database::startLog('testing2');
|
|
|
|
|
|
|
|
|
|
db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Ringo'))->fetchCol();
|
|
|
|
|
db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'))->fetchCol();
|
|
|
|
|
|
|
|
|
|
$queries1 = Database::getLog('testing1');
|
|
|
|
|
$queries2 = Database::getLog('testing2');
|
|
|
|
@ -2140,9 +2195,9 @@ class DatabaseLoggingTestCase extends DatabaseTestCase {
|
|
|
|
|
|
|
|
|
|
Database::startLog('testing1');
|
|
|
|
|
|
|
|
|
|
db_query("SELECT name FROM {test} WHERE age > :age", array(':age' => 25))->fetchCol();
|
|
|
|
|
db_query('SELECT name FROM {test} WHERE age > :age', array(':age' => 25))->fetchCol();
|
|
|
|
|
|
|
|
|
|
db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Ringo'), array('target' => 'slave'));//->fetchCol();
|
|
|
|
|
db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'), array('target' => 'slave'));//->fetchCol();
|
|
|
|
|
|
|
|
|
|
$queries1 = Database::getLog('testing1');
|
|
|
|
|
|
|
|
|
@ -2161,14 +2216,14 @@ class DatabaseLoggingTestCase extends DatabaseTestCase {
|
|
|
|
|
function testEnableTargetLoggingNoTarget() {
|
|
|
|
|
Database::startLog('testing1');
|
|
|
|
|
|
|
|
|
|
db_query("SELECT name FROM {test} WHERE age > :age", array(':age' => 25))->fetchCol();
|
|
|
|
|
db_query('SELECT name FROM {test} WHERE age > :age', array(':age' => 25))->fetchCol();
|
|
|
|
|
|
|
|
|
|
// We use "fake" here as a target because any non-existent target will do.
|
|
|
|
|
// However, because all of the tests in this class share a single page
|
|
|
|
|
// request there is likely to be a target of "slave" from one of the other
|
|
|
|
|
// unit tests, so we use a target here that we know with absolute certainty
|
|
|
|
|
// does not exist.
|
|
|
|
|
db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Ringo'), array('target' => 'fake'))->fetchCol();
|
|
|
|
|
db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'), array('target' => 'fake'))->fetchCol();
|
|
|
|
|
|
|
|
|
|
$queries1 = Database::getLog('testing1');
|
|
|
|
|
|
|
|
|
@ -2189,11 +2244,11 @@ class DatabaseLoggingTestCase extends DatabaseTestCase {
|
|
|
|
|
Database::startLog('testing1');
|
|
|
|
|
Database::startLog('testing1', 'test2');
|
|
|
|
|
|
|
|
|
|
db_query("SELECT name FROM {test} WHERE age > :age", array(':age' => 25))->fetchCol();
|
|
|
|
|
db_query('SELECT name FROM {test} WHERE age > :age', array(':age' => 25))->fetchCol();
|
|
|
|
|
|
|
|
|
|
$old_key = db_set_active('test2');
|
|
|
|
|
|
|
|
|
|
db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'Ringo'), array('target' => 'slave'))->fetchCol();
|
|
|
|
|
db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'Ringo'), array('target' => 'slave'))->fetchCol();
|
|
|
|
|
|
|
|
|
|
db_set_active($old_key);
|
|
|
|
|
|
|
|
|
@ -2230,7 +2285,7 @@ class DatabaseRangeQueryTestCase extends DrupalWebTestCase {
|
|
|
|
|
$this->assertEqual(count($range_rows), 3, t('Range query work and return correct number of rows.'));
|
|
|
|
|
|
|
|
|
|
// Test if return target data.
|
|
|
|
|
$raw_rows = db_query("SELECT name FROM {system} ORDER BY name")->fetchAll();
|
|
|
|
|
$raw_rows = db_query('SELECT name FROM {system} ORDER BY name')->fetchAll();
|
|
|
|
|
$raw_rows = array_slice($raw_rows, 2, 3);
|
|
|
|
|
$this->assertEqual($range_rows, $raw_rows, t('Range query work and return target data.'));
|
|
|
|
|
}
|
|
|
|
@ -2306,7 +2361,13 @@ class DatabaseAnsiSyntaxTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test for ANSI string concatenation.
|
|
|
|
|
*/
|
|
|
|
|
function testBasicConcat() {
|
|
|
|
|
$result = db_query("SELECT 'This' || ' ' || 'is' || ' a ' || 'test.'");
|
|
|
|
|
$result = db_query('SELECT :a1 || :a2 || :a3 || :a4 || :a5', array(
|
|
|
|
|
':a1' => 'This',
|
|
|
|
|
':a2' => ' ',
|
|
|
|
|
':a3' => 'is',
|
|
|
|
|
':a4' => ' a ',
|
|
|
|
|
':a5' => 'test.',
|
|
|
|
|
));
|
|
|
|
|
$this->assertIdentical($result->fetchField(), 'This is a test.', t('Basic ANSI Concat works.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2314,17 +2375,14 @@ class DatabaseAnsiSyntaxTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test for ANSI string concatenation with field values.
|
|
|
|
|
*/
|
|
|
|
|
function testFieldConcat() {
|
|
|
|
|
$result = db_query("SELECT 'The age of ' || name || ' is ' || age || '.' FROM {test} WHERE age = :age", array(':age' => 25));
|
|
|
|
|
$result = db_query('SELECT :a1 || name || :a2 || age || :a3 FROM {test} WHERE age = :age', array(
|
|
|
|
|
':a1' => 'The age of ',
|
|
|
|
|
':a2' => ' is ',
|
|
|
|
|
':a3' => '.',
|
|
|
|
|
':age' => 25,
|
|
|
|
|
));
|
|
|
|
|
$this->assertIdentical($result->fetchField(), 'The age of John is 25.', t('Field ANSI Concat works.'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ANSI standard allows for double quotes to escape field names.
|
|
|
|
|
*/
|
|
|
|
|
function testQuotes() {
|
|
|
|
|
$result = db_query('SELECT "name" FROM {test} WHERE age = :age', array(':age' => 25));
|
|
|
|
|
$this->assertIdentical($result->fetchField(), 'John', t('ANSI field quoting works.'));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -2420,7 +2478,7 @@ class DatabaseQueryTestCase extends DatabaseTestCase {
|
|
|
|
|
* Test that we can specify an array of values in the query by simply passing in an array.
|
|
|
|
|
*/
|
|
|
|
|
function testArraySubstitution() {
|
|
|
|
|
$names = db_query("SELECT name FROM {test} WHERE age IN (:ages) ORDER BY age", array(':ages' => array(25, 26, 27)))->fetchAll();
|
|
|
|
|
$names = db_query('SELECT name FROM {test} WHERE age IN (:ages) ORDER BY age', array(':ages' => array(25, 26, 27)))->fetchAll();
|
|
|
|
|
|
|
|
|
|
$this->assertEqual(count($names), 3, t('Correct number of names returned'));
|
|
|
|
|
}
|
|
|
|
@ -2591,9 +2649,9 @@ class DatabaseTransactionTestCase extends DatabaseTestCase {
|
|
|
|
|
|
|
|
|
|
// Neither of the rows we inserted in the two transaction layers
|
|
|
|
|
// should be present in the tables post-rollback.
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'DavidB'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'DavidB'))->fetchField();
|
|
|
|
|
$this->assertNotIdentical($saved_age, '24', t('Cannot retrieve DavidB row after commit.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'DanielB'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'DanielB'))->fetchField();
|
|
|
|
|
$this->assertNotIdentical($saved_age, '19', t('Cannot retrieve DanielB row after commit.'));
|
|
|
|
|
}
|
|
|
|
|
catch (Exception $e) {
|
|
|
|
@ -2617,9 +2675,9 @@ class DatabaseTransactionTestCase extends DatabaseTestCase {
|
|
|
|
|
|
|
|
|
|
// Because our current database claims to not support transactions,
|
|
|
|
|
// the inserted rows should be present despite the attempt to roll back.
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'DavidB'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'DavidB'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '24', t('DavidB not rolled back, since transactions are not supported.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'DanielB'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'DanielB'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '19', t('DanielB not rolled back, since transactions are not supported.'));
|
|
|
|
|
}
|
|
|
|
|
catch (Exception $e) {
|
|
|
|
@ -2639,9 +2697,9 @@ class DatabaseTransactionTestCase extends DatabaseTestCase {
|
|
|
|
|
$this->transactionOuterLayer('A');
|
|
|
|
|
|
|
|
|
|
// Because we committed, both of the inserted rows should be present.
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'DavidA'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'DavidA'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '24', t('Can retrieve DavidA row after commit.'));
|
|
|
|
|
$saved_age = db_query("SELECT age FROM {test} WHERE name = :name", array(':name' => 'DanielA'))->fetchField();
|
|
|
|
|
$saved_age = db_query('SELECT age FROM {test} WHERE name = :name', array(':name' => 'DanielA'))->fetchField();
|
|
|
|
|
$this->assertIdentical($saved_age, '19', t('Can retrieve DanielA row after commit.'));
|
|
|
|
|
}
|
|
|
|
|
catch (Exception $e) {
|
|
|
|
|