From 98f287b55a88d06199cda88b6929af589c182e23 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Fri, 31 Dec 2010 20:43:43 +0000 Subject: #1001242 by agentrickard, pwolanin, Crell, chx: Add DBTNG support for EXISTS conditions. --- modules/simpletest/tests/database_test.test | 55 +++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'modules/simpletest/tests/database_test.test') diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test index bfd67de9d..243dbba31 100644 --- a/modules/simpletest/tests/database_test.test +++ b/modules/simpletest/tests/database_test.test @@ -1684,6 +1684,61 @@ class DatabaseSelectSubqueryTestCase extends DatabaseTestCase { $this->assertEqual(count($people), 2, t('Returned the correct number of rows.')); } + + /** + * Test EXISTS subquery conditionals on SELECT statements. + */ + function testExistsSubquerySelect() { + // Put George into {test_people}. + db_insert('test_people') + ->fields(array( + 'name' => 'George', + 'age' => 27, + 'job' => 'Singer', + )) + ->execute(); + // Base query to {test}. + $query = db_select('test', 't') + ->fields('t', array('name')); + // Subquery to {test_people}. + $subquery = db_select('test_people', 'tp') + ->fields('tp', array('name')) + ->condition('name', 'George'); + $query->exists($subquery); + $result = $query->execute(); + + // Ensure that we got the right record. + $record = $result->fetch(); + $this->assertEqual($record->name, 'George', t('Fetched name is correct using EXISTS query.')); + } + + /** + * Test NOT EXISTS subquery conditionals on SELECT statements. + */ + function testNotExistsSubquerySelect() { + // Put George into {test_people}. + db_insert('test_people') + ->fields(array( + 'name' => 'George', + 'age' => 27, + 'job' => 'Singer', + )) + ->execute(); + + // Base query to {test}. + $query = db_select('test', 't') + ->fields('t', array('name')); + // Subquery to {test_people}. + $subquery = db_select('test_people', 'tp') + ->fields('tp', array('name')) + ->condition('name', 'George'); + $query->notExists($subquery); + $result = $query->execute(); + + // Ensure that we got the right record. + $record = $result->fetch(); + $this->assertFalse($record, t('NOT EXISTS query returned no results.')); + } } /** -- cgit v1.2.3