aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPayBas <contact@paybas.com>2014-05-26 20:47:19 +0200
committerPayBas <contact@paybas.com>2014-05-26 20:47:19 +0200
commit3cabe5fd792fced4120de02cfef66900b49516c4 (patch)
tree7d15e28481a9c15568a802cfd0d6e39088f35a48
parentc51b926631eb8e339c7a29cf3ff145e9e158b04f (diff)
downloadforums-3cabe5fd792fced4120de02cfef66900b49516c4.tar
forums-3cabe5fd792fced4120de02cfef66900b49516c4.tar.gz
forums-3cabe5fd792fced4120de02cfef66900b49516c4.tar.bz2
forums-3cabe5fd792fced4120de02cfef66900b49516c4.tar.xz
forums-3cabe5fd792fced4120de02cfef66900b49516c4.zip
[ticket/12561] Added tests for "after last", "after missing" and "empty"
Also removed tabs PHPBB3-12561
-rw-r--r--phpBB/phpbb/db/migration/schema_generator.php4
-rw-r--r--tests/dbal/migration/dummy_order.php49
-rw-r--r--tests/migrator/schema_generator_test.php67
3 files changed, 111 insertions, 9 deletions
diff --git a/phpBB/phpbb/db/migration/schema_generator.php b/phpBB/phpbb/db/migration/schema_generator.php
index f36e6a96d5..18c99fb94a 100644
--- a/phpBB/phpbb/db/migration/schema_generator.php
+++ b/phpBB/phpbb/db/migration/schema_generator.php
@@ -112,8 +112,8 @@ class schema_generator
$columns = $this->tables[$table]['COLUMNS'];
$offset = array_search($column_data['after'], array_keys($columns));
unset($column_data['after']);
-
- if ($offset == false)
+
+ if ($offset === false)
{
$this->tables[$table]['COLUMNS'][$column] = array_values($column_data);
}
diff --git a/tests/dbal/migration/dummy_order.php b/tests/dbal/migration/dummy_order.php
index 011ac7c1e9..af047eb416 100644
--- a/tests/dbal/migration/dummy_order.php
+++ b/tests/dbal/migration/dummy_order.php
@@ -13,7 +13,7 @@ class phpbb_dbal_migration_dummy_order extends \phpbb\db\migration\migration
{
return array(
'add_tables' => array(
- $this->table_prefix . 'column_order_test' => array(
+ $this->table_prefix . 'column_order_test1' => array(
'COLUMNS' => array(
'foobar1' => array('BOOL', 0),
'foobar3' => array('BOOL', 0),
@@ -22,10 +22,55 @@ class phpbb_dbal_migration_dummy_order extends \phpbb\db\migration\migration
),
),
'add_columns' => array(
- $this->table_prefix . 'column_order_test' => array(
+ $this->table_prefix . 'column_order_test1' => array(
'foobar2' => array('BOOL', 0, 'after' => 'foobar1'),
),
),
+
+ 'add_tables' => array(
+ $this->table_prefix . 'column_order_test2' => array(
+ 'COLUMNS' => array(
+ 'foobar1' => array('BOOL', 0),
+ 'foobar3' => array('BOOL', 0),
+ ),
+ 'PRIMARY_KEY' => array('foobar1'),
+ ),
+ ),
+ 'add_columns' => array(
+ $this->table_prefix . 'column_order_test2' => array(
+ 'foobar4' => array('BOOL', 0, 'after' => 'foobar3'),
+ ),
+ ),
+
+ 'add_tables' => array(
+ $this->table_prefix . 'column_order_test3' => array(
+ 'COLUMNS' => array(
+ 'foobar1' => array('BOOL', 0),
+ 'foobar3' => array('BOOL', 0),
+ ),
+ 'PRIMARY_KEY' => array('foobar1'),
+ ),
+ ),
+ 'add_columns' => array(
+ $this->table_prefix . 'column_order_test3' => array(
+ 'foobar5' => array('BOOL', 0, 'after' => 'non-existing'),
+ ),
+ ),
+
+ 'add_tables' => array(
+ $this->table_prefix . 'column_order_test4' => array(
+ 'COLUMNS' => array(
+ 'foobar1' => array('BOOL', 0),
+ 'foobar3' => array('BOOL', 0),
+ ),
+ 'PRIMARY_KEY' => array('foobar1'),
+ ),
+ ),
+ 'add_columns' => array(
+ $this->table_prefix . 'column_order_test4' => array(
+ 'foobar5' => array('BOOL', 0, 'after' => ''),
+ ),
+ ),
);
}
}
diff --git a/tests/migrator/schema_generator_test.php b/tests/migrator/schema_generator_test.php
index 4de6064895..c87c4cb904 100644
--- a/tests/migrator/schema_generator_test.php
+++ b/tests/migrator/schema_generator_test.php
@@ -49,18 +49,75 @@ class schmema_generator_test extends phpbb_test_case
$this->assertArrayHasKey('phpbb_users', $this->generator->get_schema());
}
- public function test_check_column_position_success()
+ 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()
+ {
+ $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.');
+ }
+
+ 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_test']['COLUMNS'];
+ $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.');
+ }
- $offset1 = array_search('foobar1', array_keys($columns));
- $offset2 = array_search('foobar2', array_keys($columns));
+ 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()
+ {
+ $this->get_schema_generator(array(
+ 'phpbb_dbal_migration_dummy_order',
+ ));
+
+ $tables = $this->generator->get_schema();
+ $columns = $tables[$this->table_prefix . 'column_order_test4']['COLUMNS'];
- $this->assertEquals($offset1 + 1, $offset2, 'The schema generator could not position the column correctly, using the "after" option in the migration script.');
+ $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.');
}
}