protected function SchemaTest::assertFieldChange in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Database/SchemaTest.php \Drupal\system\Tests\Database\SchemaTest::assertFieldChange()
Asserts that a field can be changed from one spec to another.
Parameters
$old_spec: The beginning field specification.
$new_spec: The ending field specification.
1 call to SchemaTest::assertFieldChange()
- SchemaTest::testSchemaChangeField in core/
modules/ system/ src/ Tests/ Database/ SchemaTest.php - Tests changing columns between types.
File
- core/
modules/ system/ src/ Tests/ Database/ SchemaTest.php, line 695 - Contains \Drupal\system\Tests\Database\SchemaTest.
Class
- SchemaTest
- Tests table creation and modification via the schema API.
Namespace
Drupal\system\Tests\DatabaseCode
protected function assertFieldChange($old_spec, $new_spec, $test_data = NULL) {
$table_name = 'test_table_' . $this->counter++;
$table_spec = array(
'fields' => array(
'serial_column' => array(
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'test_field' => $old_spec,
),
'primary key' => array(
'serial_column',
),
);
db_create_table($table_name, $table_spec);
$this
->pass(format_string('Table %table created.', array(
'%table' => $table_name,
)));
// Check the characteristics of the field.
$this
->assertFieldCharacteristics($table_name, 'test_field', $old_spec);
// Remove inserted rows.
db_truncate($table_name)
->execute();
if ($test_data) {
$id = db_insert($table_name)
->fields([
'test_field',
], [
$test_data,
])
->execute();
}
// Change the field.
db_change_field($table_name, 'test_field', 'test_field', $new_spec);
if ($test_data) {
$field_value = db_select($table_name)
->fields($table_name, [
'test_field',
])
->condition('serial_column', $id)
->execute()
->fetchField();
$this
->assertIdentical($field_value, $test_data);
}
// Check the field was changed.
$this
->assertFieldCharacteristics($table_name, 'test_field', $new_spec);
// Clean-up.
db_drop_table($table_name);
}