class DbCommandBaseTest
Same name and namespace in other branches
- 11.x core/modules/system/tests/src/Kernel/Scripts/DbCommandBaseTest.php \Drupal\Tests\system\Kernel\Scripts\DbCommandBaseTest
- 10 core/modules/system/tests/src/Kernel/Scripts/DbCommandBaseTest.php \Drupal\Tests\system\Kernel\Scripts\DbCommandBaseTest
- 8.9.x core/modules/system/tests/src/Kernel/Scripts/DbCommandBaseTest.php \Drupal\Tests\system\Kernel\Scripts\DbCommandBaseTest
Test that the DbToolsApplication works correctly.
The way console application's run it is impossible to test. For now we only test that we are registering the correct commands.
@group console
Hierarchy
- class \Drupal\KernelTests\KernelTestBase implements \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 extends \PHPUnit\Framework\TestCase
- class \Drupal\Tests\system\Kernel\Scripts\DbCommandBaseTest extends \Drupal\KernelTests\KernelTestBase
Expanded class hierarchy of DbCommandBaseTest
File
-
core/
modules/ system/ tests/ src/ Kernel/ Scripts/ DbCommandBaseTest.php, line 26
Namespace
Drupal\Tests\system\Kernel\ScriptsView source
class DbCommandBaseTest extends KernelTestBase {
/**
* Tests specifying a database key.
*/
public function testSpecifyDatabaseKey() {
$command = new DbCommandBaseTester();
$command_tester = new CommandTester($command);
Database::addConnectionInfo('magic_db', 'default', Database::getConnectionInfo('default')['default']);
$command_tester->execute([
'--database' => 'magic_db',
]);
$this->assertEquals('magic_db', $command->getDatabaseConnection($command_tester->getInput())
->getKey(), 'Special db key is returned');
}
/**
* Invalid database names will throw a useful exception.
*/
public function testSpecifyDatabaseDoesNotExist() {
$command = new DbCommandBaseTester();
$command_tester = new CommandTester($command);
$command_tester->execute([
'--database' => 'dne',
]);
$this->expectException(ConnectionNotDefinedException::class);
$command->getDatabaseConnection($command_tester->getInput());
}
/**
* Tests supplying database connection as a url.
*/
public function testSpecifyDbUrl() {
$command = new DbCommandBaseTester();
$command_tester = new CommandTester($command);
$command_tester->execute([
'-db-url' => Database::getConnectionInfoAsUrl(),
]);
$this->assertEquals('db-tools', $command->getDatabaseConnection($command_tester->getInput())
->getKey());
Database::removeConnection('db-tools');
$command_tester->execute([
'--database-url' => Database::getConnectionInfoAsUrl(),
]);
$this->assertEquals('db-tools', $command->getDatabaseConnection($command_tester->getInput())
->getKey());
}
/**
* Tests specifying a prefix for different connections.
*/
public function testPrefix() {
if (Database::getConnection()->driver() == 'sqlite') {
$this->markTestSkipped('SQLITE modifies the prefixes so we cannot effectively test it');
}
Database::addConnectionInfo('magic_db', 'default', Database::getConnectionInfo('default')['default']);
$command = new DbCommandBaseTester();
$command_tester = new CommandTester($command);
$command_tester->execute([
'--database' => 'magic_db',
'--prefix' => 'extra',
]);
$this->assertEquals('extra', $command->getDatabaseConnection($command_tester->getInput())
->tablePrefix());
$command_tester->execute([
'-db-url' => Database::getConnectionInfoAsUrl(),
'--prefix' => 'extra2',
]);
$this->assertEquals('extra2', $command->getDatabaseConnection($command_tester->getInput())
->tablePrefix());
// This breaks simpletest cleanup.
// @code
// $command_tester->execute([
// '--prefix' => 'notsimpletest',
// ]);
// $this->assertEquals('notsimpletest', $command->getDatabaseConnection($command_tester->getInput())->tablePrefix());
// @endcode
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.