From ecef4cc91989005802e7432b985e3ed791097ef9 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Tue, 29 Apr 2014 13:50:59 +0200 Subject: Add some unit tests for DB classes --- tests/Framework/DB.php | 56 +++++++++++++++++++++++++++++++++++++++++++- tests/Framework/DBMssql.php | 20 ++++++++++++++++ tests/Framework/DBMysql.php | 20 ++++++++++++++++ tests/Framework/DBPgsql.php | 20 ++++++++++++++++ tests/Framework/DBSqlite.php | 20 ++++++++++++++++ tests/Framework/DBSqlsrv.php | 20 ++++++++++++++++ tests/phpunit.xml | 5 ++++ 7 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 tests/Framework/DBMssql.php create mode 100644 tests/Framework/DBMysql.php create mode 100644 tests/Framework/DBPgsql.php create mode 100644 tests/Framework/DBSqlite.php create mode 100644 tests/Framework/DBSqlsrv.php (limited to 'tests') diff --git a/tests/Framework/DB.php b/tests/Framework/DB.php index b7a063841..42020f47a 100644 --- a/tests/Framework/DB.php +++ b/tests/Framework/DB.php @@ -9,7 +9,7 @@ class Framework_DB extends PHPUnit_Framework_TestCase { /** - * Class constructor + * Class constructor test */ function test_class() { @@ -17,4 +17,58 @@ class Framework_DB extends PHPUnit_Framework_TestCase $this->assertInstanceOf('rcube_db', $object, "Class constructor"); } + + /** + * Test script execution and table_prefix replacements + */ + function test_exec_script() + { + $db = new rcube_db_test_wrapper('test'); + $db->set_option('table_prefix', 'prefix_'); + + $script = implode("\n", array( + "CREATE TABLE `xxx` (test int, INDEX xxx (test));", + "-- test comment", + "ALTER TABLE `xxx` CHANGE test test int;", + "TRUNCATE xxx;", + "DROP TABLE `vvv`;", + "CREATE TABLE `i` (test int CONSTRAINT `iii` + FOREIGN KEY (`test`) REFERENCES `xxx`(`test`) ON DELETE CASCADE ON UPDATE CASCADE);", + "INSERT INTO xxx test = 1;", + "SELECT test FROM xxx;", + )); + $output = implode("\n", array( + "CREATE TABLE `prefix_xxx` (test int, INDEX prefix_xxx (test));", + "ALTER TABLE `prefix_xxx` CHANGE test test int;", + "TRUNCATE prefix_xxx;", + "DROP TABLE `prefix_vvv`;", + "CREATE TABLE `prefix_i` (test int CONSTRAINT `prefix_iii` + FOREIGN KEY (`test`) REFERENCES `prefix_xxx`(`test`) ON DELETE CASCADE ON UPDATE CASCADE);", + "INSERT INTO prefix_xxx test = 1;", + "SELECT test FROM prefix_xxx;", + )); + + $result = $db->exec_script($script); + $out = ''; + + foreach ($db->queries as $q) { + $out[] = $q[0]; + } + + $this->assertTrue($result, "Execute SQL script (result)"); + $this->assertSame(implode("\n", $out), $output, "Execute SQL script (content)"); + } +} + +/** + * rcube_db wrapper to test some protected methods + */ +class rcube_db_test_wrapper extends rcube_db +{ + public $queries = array(); + + protected function _query($query, $offset, $numrows, $params) + { + $this->queries[] = array(trim($query), $offset, $numrows, $params); + } } diff --git a/tests/Framework/DBMssql.php b/tests/Framework/DBMssql.php new file mode 100644 index 000000000..b88c95b28 --- /dev/null +++ b/tests/Framework/DBMssql.php @@ -0,0 +1,20 @@ +assertInstanceOf('rcube_db_mssql', $object, "Class constructor"); + } +} diff --git a/tests/Framework/DBMysql.php b/tests/Framework/DBMysql.php new file mode 100644 index 000000000..a3b8fda39 --- /dev/null +++ b/tests/Framework/DBMysql.php @@ -0,0 +1,20 @@ +assertInstanceOf('rcube_db_mysql', $object, "Class constructor"); + } +} diff --git a/tests/Framework/DBPgsql.php b/tests/Framework/DBPgsql.php new file mode 100644 index 000000000..67d1c4696 --- /dev/null +++ b/tests/Framework/DBPgsql.php @@ -0,0 +1,20 @@ +assertInstanceOf('rcube_db_pgsql', $object, "Class constructor"); + } +} diff --git a/tests/Framework/DBSqlite.php b/tests/Framework/DBSqlite.php new file mode 100644 index 000000000..121bb7770 --- /dev/null +++ b/tests/Framework/DBSqlite.php @@ -0,0 +1,20 @@ +assertInstanceOf('rcube_db_sqlite', $object, "Class constructor"); + } +} diff --git a/tests/Framework/DBSqlsrv.php b/tests/Framework/DBSqlsrv.php new file mode 100644 index 000000000..6272ef5d7 --- /dev/null +++ b/tests/Framework/DBSqlsrv.php @@ -0,0 +1,20 @@ +assertInstanceOf('rcube_db_sqlsrv', $object, "Class constructor"); + } +} diff --git a/tests/phpunit.xml b/tests/phpunit.xml index c2874fd07..cee3434c1 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -13,6 +13,11 @@ Framework/ContentFilter.php Framework/Csv2vcard.php Framework/DB.php + Framework/DBMssql.php + Framework/DBMysql.php + Framework/DBPgsql.php + Framework/DBSqlite.php + Framework/DBSqlsrv.php Framework/Enriched.php Framework/Html.php Framework/Html2text.php -- cgit v1.2.3