diff options
Diffstat (limited to 'tests/migrator')
-rw-r--r-- | tests/migrator/schema_generator_test.php | 135 |
1 files changed, 73 insertions, 62 deletions
diff --git a/tests/migrator/schema_generator_test.php b/tests/migrator/schema_generator_test.php index c87c4cb904..14b423f276 100644 --- a/tests/migrator/schema_generator_test.php +++ b/tests/migrator/schema_generator_test.php @@ -8,9 +8,18 @@ */ require_once __DIR__ . '/../dbal/migration/dummy_order.php'; - -class schmema_generator_test extends phpbb_test_case +require_once __DIR__ . '/../dbal/migration/dummy_order_0.php'; +require_once __DIR__ . '/../dbal/migration/dummy_order_1.php'; +require_once __DIR__ . '/../dbal/migration/dummy_order_2.php'; +require_once __DIR__ . '/../dbal/migration/dummy_order_3.php'; +require_once __DIR__ . '/../dbal/migration/dummy_order_4.php'; +require_once __DIR__ . '/../dbal/migration/dummy_order_5.php'; + +class schema_generator_test extends phpbb_test_case { + /** @var \phpbb\db\migration\schema_generator */ + protected $generator; + public function setUp() { parent::setUp(); @@ -49,75 +58,77 @@ class schmema_generator_test extends phpbb_test_case $this->assertArrayHasKey('phpbb_users', $this->generator->get_schema()); } - protected $expected_results_between = array( - 'foobar1' => array('BOOL', 0), - 'foobar2' => array('BOOL', 0), - 'foobar3' => array('BOOL', 0), - ); - - public function test_check_column_position_between_success() + public function column_add_after_data() { - $this->get_schema_generator(array( - 'phpbb_dbal_migration_dummy_order', - )); - - $tables = $this->generator->get_schema(); - $columns = $tables[$this->table_prefix . 'column_order_test1']['COLUMNS']; - - $this->assertEquals($columns, $expected_results_between, 'The schema generator could not position the column correctly between column 1 and 3, using the "after" option in the migration script.'); + return array( + array( + 'phpbb_dbal_migration_dummy_order_0', + array( + 'foobar1', + 'foobar2', + 'foobar3', + ), + ), + array( + 'phpbb_dbal_migration_dummy_order_1', + array( + 'foobar1', + 'foobar3', + 'foobar4', + ), + ), + array( + 'phpbb_dbal_migration_dummy_order_2', + array( + 'foobar1', + 'foobar3', + 'foobar5', + ), + ), + array( + 'phpbb_dbal_migration_dummy_order_3', + array( + 'foobar1', + 'foobar3', + 'foobar6', + ), + ), + array( + 'phpbb_dbal_migration_dummy_order_4', + array( + 'foobar1', + 'foobar3', + 'foobar7', + ), + ), + array( + 'phpbb_dbal_migration_dummy_order_5', + array( + 'foobar1', + 'foobar3', + 'foobar9', + 'foobar8', + ), + ), + ); } - protected $expected_results_after_last = array( - 'foobar1' => array('BOOL', 0), - 'foobar3' => array('BOOL', 0), - 'foobar4' => array('BOOL', 0), - ); - - public function test_check_column_position_after_last_success() - { - $this->get_schema_generator(array( - 'phpbb_dbal_migration_dummy_order', - )); - - $tables = $this->generator->get_schema(); - $columns = $tables[$this->table_prefix . 'column_order_test2']['COLUMNS']; - - $this->assertEquals($columns, $expected_results_after_last, 'The schema generator could not position the column correctly after the last column, using the "after" option in the migration script.'); - } - - protected $expected_results_after_missing = array( - 'foobar1' => array('BOOL', 0), - 'foobar3' => array('BOOL', 0), - 'foobar5' => array('BOOL', 0), - ); - - public function test_check_column_position_after_missing_success() - { - $this->get_schema_generator(array( - 'phpbb_dbal_migration_dummy_order', - )); - - $tables = $this->generator->get_schema(); - $columns = $tables[$this->table_prefix . 'column_order_test3']['COLUMNS']; - - $this->assertEquals($columns, $expected_results_after_missing, 'The schema generator could not position the column after a "missing" column value, using the "after" option in the migration script.'); - } - - protected $expected_results_after_empty = array( - 'foobar1' => array('BOOL', 0), - 'foobar3' => array('BOOL', 0), - 'foobar5' => array('BOOL', 0), - ); - - public function test_check_column_position_after_empty_success() + /** + * @dataProvider column_add_after_data + */ + public function test_column_add_after($migration, $expected) { $this->get_schema_generator(array( 'phpbb_dbal_migration_dummy_order', + $migration, )); $tables = $this->generator->get_schema(); - $columns = $tables[$this->table_prefix . 'column_order_test4']['COLUMNS']; - $this->assertEquals($columns, $expected_results_after_empty, 'The schema generator could not position the column after an "empty" column value, using the "after" option in the migration script.'); + $this->assertEquals( + $expected, + array_keys($tables[$this->table_prefix . 'column_order_test1']['COLUMNS']), + 'The schema generator could not position the column correctly, using the "after" option in the migration script.' + ); } } |