public function LangcodeToAsciiUpdateTest::testLangcodeColumnCollation in Drupal 8
Tests that the column collation has been updated on MySQL.
File
- core/
modules/ system/ tests/ src/ Functional/ Entity/ Update/ LangcodeToAsciiUpdateTest.php, line 28
Class
- LangcodeToAsciiUpdateTest
- Tests that the entity langcode fields have been updated to varchar_ascii.
Namespace
Drupal\Tests\system\Functional\Entity\UpdateCode
public function testLangcodeColumnCollation() {
// Only testable on MySQL.
// @see https://www.drupal.org/node/301038
if (Database::getConnection()
->databaseType() !== 'mysql') {
$this
->pass('This test can only run on MySQL');
return;
}
// Check a few different tables.
$tables = [
'node_field_data' => [
'langcode',
],
'users_field_data' => [
'langcode',
'preferred_langcode',
'preferred_admin_langcode',
],
];
foreach ($tables as $table => $columns) {
foreach ($columns as $column) {
// Depending on MYSQL versions you get different collations.
$this
->assertContains($this
->getColumnCollation($table, $column), [
'utf8mb4_0900_ai_ci',
'utf8mb4_general_ci',
], 'Found correct starting collation for ' . $table . '.' . $column);
}
}
// Apply updates.
$this
->runUpdates();
foreach ($tables as $table => $columns) {
foreach ($columns as $column) {
$this
->assertEqual('ascii_general_ci', $this
->getColumnCollation($table, $column), 'Found correct updated collation for ' . $table . '.' . $column);
}
}
}