mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-09 10:16:36 +02:00
[ticket/11880] Break up schema changes in the migrator
PHPBB3-11880
This commit is contained in:
33
tests/dbal/migration/schema.php
Normal file
33
tests/dbal/migration/schema.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2014 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
class phpbb_dbal_migration_schema extends \phpbb\db\migration\migration
|
||||
{
|
||||
function update_schema()
|
||||
{
|
||||
return array(
|
||||
'add_columns' => array(
|
||||
$this->table_prefix . 'config' => array(
|
||||
'test_column1' => array('BOOL', 1),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
function revert_schema()
|
||||
{
|
||||
return array(
|
||||
'drop_columns' => array(
|
||||
$this->table_prefix . 'config' => array(
|
||||
'test_column1',
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@@ -16,6 +16,7 @@ require_once dirname(__FILE__) . '/migration/revert.php';
|
||||
require_once dirname(__FILE__) . '/migration/revert_with_dependency.php';
|
||||
require_once dirname(__FILE__) . '/migration/fail.php';
|
||||
require_once dirname(__FILE__) . '/migration/installed.php';
|
||||
require_once dirname(__FILE__) . '/migration/schema.php';
|
||||
|
||||
class phpbb_dbal_migrator_test extends phpbb_database_test_case
|
||||
{
|
||||
@@ -267,4 +268,23 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case
|
||||
$this->fail('Installed test failed');
|
||||
}
|
||||
}
|
||||
|
||||
public function test_schema()
|
||||
{
|
||||
$this->migrator->set_migrations(array('phpbb_dbal_migration_schema'));
|
||||
|
||||
while (!$this->migrator->finished())
|
||||
{
|
||||
$this->migrator->update();
|
||||
}
|
||||
|
||||
$this->assertTrue($this->db_tools->sql_column_exists('phpbb_config', 'test_column1'));
|
||||
|
||||
while ($this->migrator->migration_state('phpbb_dbal_migration_schema'))
|
||||
{
|
||||
$this->migrator->revert('phpbb_dbal_migration_schema');
|
||||
}
|
||||
|
||||
$this->assertFalse($this->db_tools->sql_column_exists('phpbb_config', 'test_column1'));
|
||||
}
|
||||
}
|
||||
|
163
tests/migrator/get_schema_steps_test.php
Normal file
163
tests/migrator/get_schema_steps_test.php
Normal file
@@ -0,0 +1,163 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package testing
|
||||
* @copyright (c) 2014 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||
*
|
||||
*/
|
||||
|
||||
class get_schema_steps_test extends phpbb_test_case
|
||||
{
|
||||
public function schema_provider()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
array(
|
||||
'add_tables' => array('table1', 'table2', 'table3'),
|
||||
'drop_tables' => array('table1', 'table2', 'table3'),
|
||||
'add_index' => array(
|
||||
'table1' => array(
|
||||
'index1' => 'column1',
|
||||
'index2' => 'column2',
|
||||
),
|
||||
'table2' => array(
|
||||
'index1' => 'column1',
|
||||
'index2' => 'column2',
|
||||
),
|
||||
),
|
||||
'add_columns' => array(
|
||||
'table1' => array(
|
||||
'column1' => array('foo'),
|
||||
'column2' => array('bar'),
|
||||
),
|
||||
),
|
||||
'change_columns' => array(
|
||||
'table1' => array(
|
||||
'column1' => array('foo'),
|
||||
'column2' => array('bar'),
|
||||
),
|
||||
),
|
||||
'drop_columns' => array(
|
||||
'table1' => array(
|
||||
'column1',
|
||||
'column2',
|
||||
),
|
||||
),
|
||||
'add_unique_index' => array(
|
||||
'table1' => array(
|
||||
'index1' => 'column1',
|
||||
'index2' => 'column2',
|
||||
),
|
||||
),
|
||||
'drop_keys' => array(
|
||||
'table1' => array(
|
||||
'column1',
|
||||
'column2',
|
||||
),
|
||||
),
|
||||
'add_primary_keys' => array(
|
||||
'table1' => array('foo'),
|
||||
'table2' => array('bar'),
|
||||
'table3' => array('foobar'),
|
||||
),
|
||||
),
|
||||
array(
|
||||
array('dbtools.perform_schema_changes', array(array('drop_tables' => array('table1')))),
|
||||
array('dbtools.perform_schema_changes', array(array('drop_tables' => array('table2')))),
|
||||
array('dbtools.perform_schema_changes', array(array('drop_tables' => array('table3')))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_tables' => array('table1')))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_tables' => array('table2')))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_tables' => array('table3')))),
|
||||
array('dbtools.perform_schema_changes', array(array('change_columns' => array(
|
||||
'table1' => array(
|
||||
'column1' => array('foo'),
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('change_columns' => array(
|
||||
'table1' => array(
|
||||
'column2' => array('bar'),
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_columns' => array(
|
||||
'table1' => array(
|
||||
'column1' => array('foo'),
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_columns' => array(
|
||||
'table1' => array(
|
||||
'column2' => array('bar'),
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('drop_keys' => array(
|
||||
'table1' => array(
|
||||
0 => 'column1',
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('drop_keys' => array(
|
||||
'table1' => array(
|
||||
1 => 'column2',
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('drop_columns' => array(
|
||||
'table1' => array(
|
||||
0 => 'column1',
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('drop_columns' => array(
|
||||
'table1' => array(
|
||||
1 => 'column2',
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_primary_keys' => array(
|
||||
'table1' => array('foo'),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_primary_keys' => array(
|
||||
'table2' => array('bar'),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_primary_keys' => array(
|
||||
'table3' => array('foobar'),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_unique_index' => array(
|
||||
'table1' => array(
|
||||
'index1' => 'column1',
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_unique_index' => array(
|
||||
'table1' => array(
|
||||
'index2' => 'column2',
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_index' => array(
|
||||
'table1' => array(
|
||||
'index1' => 'column1',
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_index' => array(
|
||||
'table1' => array(
|
||||
'index2' => 'column2',
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_index' => array(
|
||||
'table2' => array(
|
||||
'index1' => 'column1',
|
||||
),
|
||||
)))),
|
||||
array('dbtools.perform_schema_changes', array(array('add_index' => array(
|
||||
'table2' => array(
|
||||
'index2' => 'column2',
|
||||
),
|
||||
)))),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider schema_provider
|
||||
*/
|
||||
public function test_get_schema_steps($schema_changes, $expected)
|
||||
{
|
||||
$this->assertEquals($expected, \phpbb\db\migrator::get_schema_steps($schema_changes));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user