summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/database_test.test
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-09-07 15:28:53 +0000
committerDries Buytaert <dries@buytaert.net>2009-09-07 15:28:53 +0000
commitf73040e18b1bde3421e9971d99b39ee3fa39abe5 (patch)
treee8839226ee1f4b84c8efcc73325c9287cb161b2a /modules/simpletest/tests/database_test.test
parenta539b0e00dedddfea36d4a96b788e42923056a78 (diff)
downloadbrdo-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.test48
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.'));
+ }
}
/**