NextIdTest.php in Drupal 9
File
core/tests/Drupal/KernelTests/Core/Database/NextIdTest.php
View source
<?php
namespace Drupal\KernelTests\Core\Database;
use Drupal\Core\Database\Database;
class NextIdTest extends DatabaseTestBase {
protected static $modules = [
'database_test',
'system',
];
protected function setUp() : void {
parent::setUp();
$this
->installSchema('system', 'sequences');
}
public function testDbNextId() {
$first = $this->connection
->nextId();
$second = $this->connection
->nextId();
$this
->assertEquals($first + 1, $second, 'The second call from a sequence provides a number increased by one.');
$result = $this->connection
->nextId(1000);
$this
->assertEquals(1001, $result, 'Sequence provides a larger number than the existing ID.');
}
public function testDbNextIdClosedConnection() {
$driver = $this->connection
->driver();
if ($driver !== 'mysql') {
$this
->markTestSkipped("MySql tests can not run for driver '{$driver}'.");
}
$connection_info = Database::getConnectionInfo();
Database::addConnectionInfo('default', 'next_id', $connection_info['default']);
Database::getConnection('next_id')
->nextId();
Database::getConnection('next_id')
->nextId();
$count = $this->connection
->select('sequences')
->countQuery()
->execute()
->fetchField();
$this
->assertGreaterThan(1, $count);
Database::closeConnection('next_id');
$count = $this->connection
->select('sequences')
->countQuery()
->execute()
->fetchField();
$this
->assertEquals(1, $count);
}
}