diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-02-22 16:31:24 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-02-22 16:31:24 +0000 |
commit | e1652e99b61577ac42d6d6618420c872c0e42435 (patch) | |
tree | 23e8385467e826fd97ab434c5201d7a96a810567 /modules/simpletest/tests/database_test.test | |
parent | 916b11afabacf5b7e142ce3fe370a24a80c15b3e (diff) | |
download | brdo-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.test | 52 |
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() { |