1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-04-13 20:32:11 +02:00

[ticket/15396] Added test for correct order of revert_schema() steps

PHPBB3-15396
This commit is contained in:
kasimi 2017-10-14 15:59:42 +02:00
parent ed9b896d22
commit 490626d985
No known key found for this signature in database
GPG Key ID: 3163AB573241193A
3 changed files with 136 additions and 0 deletions

View File

@ -0,0 +1,39 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
class phpbb_dbal_migration_revert_table extends \phpbb\db\migration\migration
{
function update_schema()
{
return array(
'add_tables' => array(
'phpbb_foobar' => array(
'COLUMNS' => array(
'module_id' => array('UINT:3', NULL, 'auto_increment'),
'bar_column' => array('UINT', 1),
),
'PRIMARY_KEY' => 'module_id',
),
),
);
}
function revert_schema()
{
return array(
'drop_tables' => array(
'phpbb_foobar',
),
);
}
}

View File

@ -0,0 +1,52 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
class phpbb_dbal_migration_revert_table_with_dependency extends \phpbb\db\migration\migration
{
static public function depends_on()
{
return array('phpbb_dbal_migration_revert_table');
}
function update_schema()
{
return array(
'add_columns' => array(
'phpbb_foobar' => array(
'baz_column' => array('UINT', 1),
),
),
'drop_columns' => array(
'phpbb_foobar' => array(
'bar_column',
),
),
);
}
function revert_schema()
{
return array(
'add_columns' => array(
'phpbb_foobar' => array(
'bar_column' => array('UINT', 1),
),
),
'drop_columns' => array(
'phpbb_foobar' => array(
'baz_column',
),
),
);
}
}

View File

@ -17,16 +17,26 @@ require_once dirname(__FILE__) . '/migration/if.php';
require_once dirname(__FILE__) . '/migration/recall.php';
require_once dirname(__FILE__) . '/migration/revert.php';
require_once dirname(__FILE__) . '/migration/revert_with_dependency.php';
require_once dirname(__FILE__) . '/migration/revert_table.php';
require_once dirname(__FILE__) . '/migration/revert_table_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
{
/** @var \phpbb\db\driver\driver_interface */
protected $db;
/** @var \phpbb\db\tools\tools_interface */
protected $db_tools;
/** @var \phpbb\db\migrator */
protected $migrator;
/** @var \phpbb\config\config */
protected $config;
public function getDataSet()
{
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/migrator.xml');
@ -241,6 +251,41 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case
$this->assertEquals(1, $migrator_test_revert_counter, 'Revert did call custom function again');
}
public function test_revert_table()
{
// Make sure there are no other migrations in the db, this could cause issues
$this->db->sql_query("DELETE FROM phpbb_migrations");
$this->migrator->load_migration_state();
$this->migrator->set_migrations(array('phpbb_dbal_migration_revert_table', 'phpbb_dbal_migration_revert_table_with_dependency'));
$this->assertFalse($this->migrator->migration_state('phpbb_dbal_migration_revert_table'));
$this->assertFalse($this->migrator->migration_state('phpbb_dbal_migration_revert_table_with_dependency'));
// Install the migration first
while (!$this->migrator->finished())
{
$this->migrator->update();
}
$this->assertTrue($this->migrator->migration_state('phpbb_dbal_migration_revert_table') !== false);
$this->assertTrue($this->migrator->migration_state('phpbb_dbal_migration_revert_table_with_dependency') !== false);
$this->assertTrue($this->db_tools->sql_column_exists('phpbb_foobar', 'baz_column'));
$this->assertFalse($this->db_tools->sql_column_exists('phpbb_foobar', 'bar_column'));
// Revert migrations
while ($this->migrator->migration_state('phpbb_dbal_migration_revert_table') !== false)
{
$this->migrator->revert('phpbb_dbal_migration_revert_table');
}
$this->assertFalse($this->migrator->migration_state('phpbb_dbal_migration_revert_table'));
$this->assertFalse($this->migrator->migration_state('phpbb_dbal_migration_revert_table_with_dependency'));
$this->assertFalse($this->db_tools->sql_table_exists('phpbb_foobar'));
}
public function test_fail()
{
$this->migrator->set_migrations(array('phpbb_dbal_migration_fail'));