diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-09-07 15:28:53 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-09-07 15:28:53 +0000 |
commit | f73040e18b1bde3421e9971d99b39ee3fa39abe5 (patch) | |
tree | e8839226ee1f4b84c8efcc73325c9287cb161b2a /modules/simpletest/tests/database_test.test | |
parent | a539b0e00dedddfea36d4a96b788e42923056a78 (diff) | |
download | brdo-f73040e18b1bde3421e9971d99b39ee3fa39abe5.tar.gz brdo-f73040e18b1bde3421e9971d99b39ee3fa39abe5.tar.bz2 |
- Patch #557318 by cha0s, hass, Crell: Changed UNION support is missing in database API.
Diffstat (limited to 'modules/simpletest/tests/database_test.test')
-rw-r--r-- | modules/simpletest/tests/database_test.test | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test index d3c972742..8c1bb1dc5 100644 --- a/modules/simpletest/tests/database_test.test +++ b/modules/simpletest/tests/database_test.test @@ -1352,6 +1352,54 @@ class DatabaseSelectTestCase extends DatabaseTestCase { $this->assertEqual($names[0], 'Gonzo', t('Correct record returned for NOT NULL age.')); $this->assertEqual($names[1], 'Kermit', t('Correct record returned for NOT NULL age.')); } + + /** + * Test that we can UNION multiple Select queries together. This is + * semantically equal to UNION DISTINCT, so we don't explicity test that. + */ + function testUnion() { + $query_1 = db_select('test', 't') + ->fields('t', array('name')) + ->condition('age', array(27, 28), 'IN'); + + $query_2 = db_select('test', 't') + ->fields('t', array('name')) + ->condition('age', 28); + + $query_1->union($query_2); + + $names = $query_1->execute()->fetchCol(); + + // Ensure we only get 2 records. + $this->assertEqual(count($names), 2, t('UNION correctly discarded duplicates.')); + + $this->assertEqual($names[0], 'George', t('First query returned correct name.')); + $this->assertEqual($names[1], 'Ringo', t('Second query returned correct name.')); + } + + /** + * Test that we can UNION ALL multiple Select queries together. + */ + function testUnionAll() { + $query_1 = db_select('test', 't') + ->fields('t', array('name')) + ->condition('age', array(27, 28), 'IN'); + + $query_2 = db_select('test', 't') + ->fields('t', array('name')) + ->condition('age', 28); + + $query_1->union($query_2, 'ALL'); + + $names = $query_1->execute()->fetchCol(); + + // Ensure we get all 3 records. + $this->assertEqual(count($names), 3, t('UNION ALL correctly preserved duplicates.')); + + $this->assertEqual($names[0], 'George', t('First query returned correct first name.')); + $this->assertEqual($names[1], 'Ringo', t('Second query returned correct second name.')); + $this->assertEqual($names[2], 'Ringo', t('Third query returned correct name.')); + } } /** |