class InsertDefaultsTest
Same name and namespace in other branches
- 11.x core/tests/Drupal/KernelTests/Core/Database/InsertDefaultsTest.php \Drupal\KernelTests\Core\Database\InsertDefaultsTest
Tests the Insert query builder with default values.
@group Database
Hierarchy
- class \Drupal\KernelTests\KernelTestBase extends \Drupal\Core\DependencyInjection\ServiceProviderInterface uses \Drupal\KernelTests\AssertLegacyTrait, \Drupal\KernelTests\AssertContentTrait, \Drupal\Tests\RandomGeneratorTrait, \Drupal\Tests\ConfigTestTrait, \Drupal\Tests\ExtensionListTestTrait, \Drupal\Tests\TestRequirementsTrait, \Drupal\Tests\Traits\PhpUnitWarnings, \Drupal\Tests\PhpUnitCompatibilityTrait, \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait implements \PHPUnit\Framework\TestCase
- class \Drupal\KernelTests\Core\Database\DatabaseTestBase uses \Drupal\KernelTests\Core\Database\DatabaseTestSchemaDataTrait, \Drupal\KernelTests\Core\Database\DatabaseTestSchemaInstallTrait implements \Drupal\KernelTests\KernelTestBase
- class \Drupal\KernelTests\Core\Database\InsertDefaultsTest implements \Drupal\KernelTests\Core\Database\DatabaseTestBase
- class \Drupal\KernelTests\Core\Database\DatabaseTestBase uses \Drupal\KernelTests\Core\Database\DatabaseTestSchemaDataTrait, \Drupal\KernelTests\Core\Database\DatabaseTestSchemaInstallTrait implements \Drupal\KernelTests\KernelTestBase
Expanded class hierarchy of InsertDefaultsTest
File
-
core/
tests/ Drupal/ KernelTests/ Core/ Database/ InsertDefaultsTest.php, line 12
Namespace
Drupal\KernelTests\Core\DatabaseView source
class InsertDefaultsTest extends DatabaseTestBase {
/**
* Tests that we can run a query that uses default values for everything.
*
* @see \database_test_schema()
*/
public function testDefaultInsert() {
$query = $this->connection
->insert('test')
->useDefaults([
'job',
]);
$id = $query->execute();
$job = $this->connection
->query('SELECT [job] FROM {test} WHERE [id] = :id', [
':id' => $id,
])
->fetchField();
$this->assertSame('Undefined', $job, 'Default field value is set.');
}
/**
* Tests that no action will be preformed if no fields are specified.
*/
public function testDefaultEmptyInsert() {
$num_records_before = (int) $this->connection
->query('SELECT COUNT(*) FROM {test}')
->fetchField();
try {
$this->connection
->insert('test')
->execute();
// This is only executed if no exception has been thrown.
$this->fail('Expected exception NoFieldsException has not been thrown.');
} catch (NoFieldsException $e) {
// Expected exception; just continue testing.
}
$num_records_after = (int) $this->connection
->query('SELECT COUNT(*) FROM {test}')
->fetchField();
$this->assertSame($num_records_before, $num_records_after, 'Do nothing as no fields are specified.');
}
/**
* Tests that we can insert fields with values and defaults in the same query.
*
* @see \database_test_schema()
*/
public function testDefaultInsertWithFields() {
$query = $this->connection
->insert('test')
->fields([
'name' => 'Bob',
])
->useDefaults([
'job',
]);
$id = $query->execute();
$job = $this->connection
->query('SELECT [job] FROM {test} WHERE [id] = :id', [
':id' => $id,
])
->fetchField();
$this->assertSame('Undefined', $job, 'Default field value is set.');
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.