diff options
| author | Andreas Fischer <bantu@phpbb.com> | 2013-03-27 18:11:49 +0100 |
|---|---|---|
| committer | Andreas Fischer <bantu@phpbb.com> | 2013-03-27 18:11:49 +0100 |
| commit | 55fb87ff180ca47a1a39d2714889d170ec368d31 (patch) | |
| tree | 5f2be1c5b610c311db66ee19000386c521dd14b9 /tests/dbal/sql_insert_buffer_test.php | |
| parent | 43b6ae3fee34e03ce579ca24ed4cf58f4a1f4660 (diff) | |
| parent | af9f30cd52fd7b53b17b946a0c646fd72c4a6f4f (diff) | |
| download | forums-55fb87ff180ca47a1a39d2714889d170ec368d31.tar forums-55fb87ff180ca47a1a39d2714889d170ec368d31.tar.gz forums-55fb87ff180ca47a1a39d2714889d170ec368d31.tar.bz2 forums-55fb87ff180ca47a1a39d2714889d170ec368d31.tar.xz forums-55fb87ff180ca47a1a39d2714889d170ec368d31.zip | |
Merge remote-tracking branch 'nickvergessen/ticket/bantu/11469' into ticket/11469
* nickvergessen/ticket/bantu/11469:
[ticket/11469] Use method to check config count, instead of repeating it
[ticket/11469] Return after sql_multi_insert when multi_insert is false
[ticket/11469] Add some basic unit tests for phpbb_db_sql_insert_buffer
Diffstat (limited to 'tests/dbal/sql_insert_buffer_test.php')
| -rw-r--r-- | tests/dbal/sql_insert_buffer_test.php | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/tests/dbal/sql_insert_buffer_test.php b/tests/dbal/sql_insert_buffer_test.php new file mode 100644 index 0000000000..e3ee767937 --- /dev/null +++ b/tests/dbal/sql_insert_buffer_test.php @@ -0,0 +1,149 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +class phpbb_dbal_sql_insert_buffer_test extends phpbb_database_test_case +{ + public function getDataSet() + { + return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/config.xml'); + } + + protected function assert_config_count($db, $num_configs) + { + $sql = 'SELECT COUNT(*) AS num_configs + FROM phpbb_config'; + $result = $db->sql_query($sql); + $this->assertEquals($num_configs, $db->sql_fetchfield('num_configs')); + $db->sql_freeresult($result); + } + + public function insert_buffer_data() + { + $db = $this->new_dbal(); + + if ($db->multi_insert) + { + // Test with enabled and disabled multi_insert + return array( + array(true), + array(false), + ); + } + else + { + // Only test with disabled multi_insert, the DB doesn't support it + return array( + array(false), + ); + } + } + + /** + * @dataProvider insert_buffer_data + */ + public function test_insert_and_flush($force_multi_insert) + { + $db = $this->new_dbal(); + $db->multi_insert = $force_multi_insert; + + $buffer = new phpbb_db_sql_insert_buffer($db, 'phpbb_config', 2); + + $this->assert_config_count($db, 2); + + // This call can be buffered + $buffer->insert(array( + 'config_name' => 'name1', + 'config_value' => 'value1', + 'is_dynamic' => '0', + )); + + if ($db->multi_insert) + { + $this->assert_config_count($db, 2); + } + else + { + $this->assert_config_count($db, 3); + } + + // Manually flush + $buffer->flush(); + + $this->assert_config_count($db, 3); + } + + /** + * @dataProvider insert_buffer_data + */ + public function test_insert_with_flush($force_multi_insert) + { + $db = $this->new_dbal(); + $db->multi_insert = $force_multi_insert; + + $buffer = new phpbb_db_sql_insert_buffer($db, 'phpbb_config', 2); + + $this->assert_config_count($db, 2); + + $buffer->insert(array( + 'config_name' => 'name1', + 'config_value' => 'value1', + 'is_dynamic' => '0', + )); + + // This call flushes the values + $buffer->insert(array( + 'config_name' => 'name2', + 'config_value' => 'value2', + 'is_dynamic' => '0', + )); + + $this->assert_config_count($db, 4); + } + + /** + * @dataProvider insert_buffer_data + */ + public function test_insert_all_and_flush($force_multi_insert) + { + $db = $this->new_dbal(); + $db->multi_insert = $force_multi_insert; + + $buffer = new phpbb_db_sql_insert_buffer($db, 'phpbb_config', 2); + + $this->assert_config_count($db, 2); + + $buffer->insert_all(array( + array( + 'config_name' => 'name1', + 'config_value' => 'value1', + 'is_dynamic' => '0', + ), + array( + 'config_name' => 'name2', + 'config_value' => 'value2', + 'is_dynamic' => '0', + ), + array( + 'config_name' => 'name3', + 'config_value' => 'value3', + 'is_dynamic' => '0', + ), + )); + + if ($db->multi_insert) + { + $this->assert_config_count($db, 4); + + // Manually flush + $buffer->flush(); + } + + $this->assert_config_count($db, 5); + } +} |
