UidUpdateToSerialTest.php in Drupal 9
File
core/modules/user/tests/src/Functional/UidUpdateToSerialTest.php
View source
<?php
namespace Drupal\Tests\user\Functional;
use Drupal\FunctionalTests\Update\UpdatePathTestBase;
class UidUpdateToSerialTest extends UpdatePathTestBase {
protected function setDatabaseDumpFiles() {
$this->databaseDumpFiles[] = __DIR__ . '/../../../../system/tests/fixtures/update/drupal-9.0.0.bare.standard.php.gz';
}
public function testDatabaseLoaded() {
$key_value_store = \Drupal::keyValue('entity.storage_schema.sql');
$id_schema = $key_value_store
->get('user.field_schema_data.uid', []);
$this
->assertSame('int', $id_schema['users']['fields']['uid']['type']);
$this
->runUpdates();
$key_value_store = \Drupal::keyValue('entity.storage_schema.sql');
$id_schema = $key_value_store
->get('user.field_schema_data.uid', []);
$this
->assertSame('serial', $id_schema['users']['fields']['uid']['type']);
$connection = \Drupal::database();
if ($connection
->driver() == 'pgsql') {
$seq_name = $connection
->makeSequenceName('users', 'uid');
$seq_owner = $connection
->query("SELECT d.refobjid::regclass as table_name, a.attname as field_name\n FROM pg_depend d\n JOIN pg_attribute a ON a.attrelid = d.refobjid AND a.attnum = d.refobjsubid\n WHERE d.objid = :seq_name::regclass\n AND d.refobjsubid > 0\n AND d.classid = 'pg_class'::regclass", [
':seq_name' => 'public.' . $seq_name,
])
->fetchObject();
$this
->assertEquals($connection
->tablePrefix('users') . 'users', $seq_owner->table_name);
$this
->assertEquals('uid', $seq_owner->field_name);
$seq_last_value = $connection
->query("SELECT last_value FROM {$seq_name}")
->fetchField();
$maximum_uid = $connection
->query('SELECT MAX([uid]) FROM {users}')
->fetchField();
$this
->assertEquals($maximum_uid + 1, $seq_last_value);
}
}
}