From d2c02ca453f938fb6f8f2c6853f36dfe426ced1f Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Tue, 21 Jul 2009 01:56:36 +0000 Subject: #481288 by Berdir and Crell: Add support for INSERT INTO ... SELECT FROM ... --- modules/simpletest/tests/database_test.test | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'modules/simpletest') diff --git a/modules/simpletest/tests/database_test.test b/modules/simpletest/tests/database_test.test index bae378c9c..c354e9a8e 100644 --- a/modules/simpletest/tests/database_test.test +++ b/modules/simpletest/tests/database_test.test @@ -518,10 +518,21 @@ class DatabaseInsertTestCase extends DatabaseTestCase { * Test that the INSERT INTO ... SELECT ... syntax works. */ function testInsertSelect() { - $query = db_select('test_people', 'tp')->fields('tp', array('name', 'age', 'job')); + $query = db_select('test_people', 'tp'); + // The query builder will always append expressions after fields. + // Add the expression first to test that the insert fields are correctly + // re-ordered. + $query->addExpression('tp.age', 'age'); + $query + ->fields('tp', array('name','job')) + ->condition('tp.name', 'Meredith'); + // The resulting query should be equivalent to: + // INSERT INTO test (age, name, job) + // SELECT tp.age AS age, tp.name AS name, tp.job AS job + // FROM test_people tp + // WHERE tp.name = 'Meredith' db_insert('test') - ->fields(array('name', 'age', 'job')) ->from($query) ->execute(); @@ -603,8 +614,13 @@ class DatabaseInsertDefaultsTestCase extends DatabaseTestCase { function testDefaultEmptyInsert() { $num_records_before = (int) db_query('SELECT COUNT(*) FROM {test}')->fetchField(); - $result = db_insert('test')->execute(); - $this->assertNull($result, t('Return NULL as no fields are specified.')); + try { + $result = db_insert('test')->execute(); + // This is only executed if no exception has been thrown. + $this->fail(t('Expected exception NoFieldsException has not been thrown.')); + } catch (NoFieldsException $e) { + $this->pass(t('Expected exception NoFieldsException has been thrown.')); + } $num_records_after = (int) db_query('SELECT COUNT(*) FROM {test}')->fetchField(); $this->assertIdentical($num_records_before, $num_records_after, t('Do nothing as no fields are specified.')); -- cgit v1.2.3