summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/database_test.test
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-02-22 16:31:24 +0000
committerDries Buytaert <dries@buytaert.net>2009-02-22 16:31:24 +0000
commite1652e99b61577ac42d6d6618420c872c0e42435 (patch)
tree23e8385467e826fd97ab434c5201d7a96a810567 /modules/simpletest/tests/database_test.test
parent916b11afabacf5b7e142ce3fe370a24a80c15b3e (diff)
downloadbrdo-e1652e99b61577ac42d6d6618420c872c0e42435.tar.gz
brdo-e1652e99b61577ac42d6d6618420c872c0e42435.tar.bz2
- Patch #374940 by Dave Reid et al: fixed MergeQuery problem.
Diffstat (limited to 'modules/simpletest/tests/database_test.test')
-rw-r--r--modules/simpletest/tests/database_test.test52
1 files changed, 52 insertions, 0 deletions
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test
index 1fa4667f6..faaeb01ab 100644
--- a/modules/simpletest/tests/database_test.test
+++ b/modules/simpletest/tests/database_test.test
@@ -959,6 +959,58 @@ 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();
+
+ db_merge('test_people')
+ ->key(array('job' => 'Presenter'))
+ ->execute();
+
+ $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();
+ $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.'));
+ }
+
+ /**
+ * Confirm that we can merge-update without any update fields.
+ */
+ function testMergeUpdateWithoutUpdate() {
+ $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();
+ $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();
+ $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.'));
+
+ db_merge('test_people')
+ ->key(array('job' => 'Speaker'))
+ ->fields(array('age' => 31))
+ ->updateExcept(array('age'))
+ ->execute();
+
+ $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();
+ $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.'));
+ }
+
+ /**
* Test that an invalid merge query throws an exception like it is supposed to.
*/
function testInvalidMerge() {