From 7c397406d182d47e109fb15a1728680179f4249c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Fri, 19 Oct 2012 10:59:10 +0200 Subject: [PATCH 1/5] Start table testcases --- test/classes/PMA_Table_test.php | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 test/classes/PMA_Table_test.php diff --git a/test/classes/PMA_Table_test.php b/test/classes/PMA_Table_test.php new file mode 100644 index 0000000000..440f3f5002 --- /dev/null +++ b/test/classes/PMA_Table_test.php @@ -0,0 +1,33 @@ +assertInstanceOf('PMA_Table', $table); + } + +} + From c9d27916c72623eb106cbb7b3a0a2331cc0759ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Fri, 19 Oct 2012 11:09:51 +0200 Subject: [PATCH 2/5] Test for table renaming --- libraries/dbi/dummy.lib.php | 8 +++++++ test/classes/PMA_Table_test.php | 40 +++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/libraries/dbi/dummy.lib.php b/libraries/dbi/dummy.lib.php index 83d92132bc..f41786b4fd 100644 --- a/libraries/dbi/dummy.lib.php +++ b/libraries/dbi/dummy.lib.php @@ -213,6 +213,14 @@ $GLOBALS['dummy_queries'] = array( 'query' => 'SELECT `PRIVILEGE_TYPE` FROM `INFORMATION_SCHEMA`.`TABLE_PRIVILEGES` WHERE GRANTEE=\'\'\'pma_test\'\'@\'\'localhost\'\'\' AND PRIVILEGE_TYPE=\'EVENT\' AND TABLE_SCHEMA=\'pma\\\\_test\' AND TABLE_NAME=\'table1\'', 'result' => array(), ), + array( + 'query' => 'RENAME TABLE `table1`.`pma_test` TO `table1`.`table3`;', + 'result' => array(), + ), + array( + 'query' => 'SELECT TRIGGER_SCHEMA, TRIGGER_NAME, EVENT_MANIPULATION, EVENT_OBJECT_TABLE, ACTION_TIMING, ACTION_STATEMENT, EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, DEFINER FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA= \'table1\' AND EVENT_OBJECT_TABLE = \'pma_test\';', + 'result' => array(), + ), ); /** diff --git a/test/classes/PMA_Table_test.php b/test/classes/PMA_Table_test.php index 440f3f5002..6f153f7442 100644 --- a/test/classes/PMA_Table_test.php +++ b/test/classes/PMA_Table_test.php @@ -10,6 +10,14 @@ */ require_once 'libraries/Table.class.php'; +require_once 'libraries/Util.class.php'; +require_once 'libraries/database_interface.lib.php'; +require_once 'libraries/php-gettext/gettext.inc'; +require_once 'libraries/url_generating.lib.php'; +require_once 'libraries/Theme.class.php'; +require_once 'libraries/Tracker.class.php'; +require_once 'libraries/relation.lib.php'; + /** * Tests behaviour of PMA_Table class @@ -18,6 +26,27 @@ require_once 'libraries/Table.class.php'; */ class PMA_Table_Test extends PHPUnit_Framework_TestCase { + /** + * Configures environment + * + * @return void + */ + protected function setUp() + { + $GLOBALS['server'] = 0; + $GLOBALS['cfg']['Server']['DisableIS'] = false; + $GLOBALS['cfg']['ServerDefault'] = 1; + $GLOBALS['lang'] = 'en'; + $_SESSION[' PMA_token '] = 'token'; + $GLOBALS['cfg']['MySQLManualType'] = 'viewable'; + $GLOBALS['cfg']['MySQLManualBase'] = 'http://dev.mysql.com/doc/refman'; + $GLOBALS['cfg']['PropertiesIconic'] = 'both'; + $_SESSION['PMA_Theme'] = new PMA_Theme(); + $GLOBALS['pmaThemeImage'] = 'themes/dot.gif'; + $GLOBALS['is_ajax_request'] = false; + $GLOBALS['cfgRelation'] = PMA_getRelationsParam(); + } + /** * Test object creating * @@ -29,5 +58,16 @@ class PMA_Table_Test extends PHPUnit_Framework_TestCase $this->assertInstanceOf('PMA_Table', $table); } + /** + * Test renaming + * + * @return void + */ + public function testRename() + { + $table = new PMA_Table('pma_test', 'table1'); + $table->rename('table3'); + $this->assertEquals('table3', $table->getName()); + } } From f7dad085d19c8b61c5f67596f65ec785e740a8d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Fri, 19 Oct 2012 11:13:08 +0200 Subject: [PATCH 3/5] Test for getting columns --- libraries/dbi/dummy.lib.php | 4 ++-- test/classes/PMA_Table_test.php | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/libraries/dbi/dummy.lib.php b/libraries/dbi/dummy.lib.php index f41786b4fd..15c6612c94 100644 --- a/libraries/dbi/dummy.lib.php +++ b/libraries/dbi/dummy.lib.php @@ -214,11 +214,11 @@ $GLOBALS['dummy_queries'] = array( 'result' => array(), ), array( - 'query' => 'RENAME TABLE `table1`.`pma_test` TO `table1`.`table3`;', + 'query' => 'RENAME TABLE `pma_test`.`table1` TO `pma_test`.`table3`;', 'result' => array(), ), array( - 'query' => 'SELECT TRIGGER_SCHEMA, TRIGGER_NAME, EVENT_MANIPULATION, EVENT_OBJECT_TABLE, ACTION_TIMING, ACTION_STATEMENT, EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, DEFINER FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA= \'table1\' AND EVENT_OBJECT_TABLE = \'pma_test\';', + 'query' => 'SELECT TRIGGER_SCHEMA, TRIGGER_NAME, EVENT_MANIPULATION, EVENT_OBJECT_TABLE, ACTION_TIMING, ACTION_STATEMENT, EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, DEFINER FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA= \'pma_test\' AND EVENT_OBJECT_TABLE = \'table1\';', 'result' => array(), ), diff --git a/test/classes/PMA_Table_test.php b/test/classes/PMA_Table_test.php index 6f153f7442..78ae2c4888 100644 --- a/test/classes/PMA_Table_test.php +++ b/test/classes/PMA_Table_test.php @@ -54,7 +54,7 @@ class PMA_Table_Test extends PHPUnit_Framework_TestCase */ public function testCreate() { - $table = new PMA_Table('pma_test', 'table1'); + $table = new PMA_Table('table1', 'pma_test'); $this->assertInstanceOf('PMA_Table', $table); } @@ -65,9 +65,23 @@ class PMA_Table_Test extends PHPUnit_Framework_TestCase */ public function testRename() { - $table = new PMA_Table('pma_test', 'table1'); + $table = new PMA_Table('table1', 'pma_test'); $table->rename('table3'); $this->assertEquals('table3', $table->getName()); } + + /** + * Test getting columns + * + * @return void + */ + public function testColumns() + { + $table = new PMA_Table('table1', 'pma_test'); + $this->assertEquals( + array('`pma_test`.`table1`.`i`', '`pma_test`.`table1`.`o`'), + $table->getColumns() + ); + } } From 634db720e11c3ccc9dba59b2ed74095ae1618201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Fri, 19 Oct 2012 11:15:51 +0200 Subject: [PATCH 4/5] Unique columns test --- libraries/dbi/dummy.lib.php | 4 ++++ test/classes/PMA_Table_test.php | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/libraries/dbi/dummy.lib.php b/libraries/dbi/dummy.lib.php index 15c6612c94..32150fcc33 100644 --- a/libraries/dbi/dummy.lib.php +++ b/libraries/dbi/dummy.lib.php @@ -111,6 +111,10 @@ $GLOBALS['dummy_queries'] = array( array('o', 'int(11)', 'NO', 'MUL', 'NULL', ''), ) ), + array( + 'query' => 'SHOW INDEXES FROM `pma_test`.`table1` WHERE (Non_unique = 0)', + 'result' => array(), + ), array( 'query' => 'SHOW COLUMNS FROM `pma_test`.`table2`', 'columns' => array( diff --git a/test/classes/PMA_Table_test.php b/test/classes/PMA_Table_test.php index 78ae2c4888..fc90cbaa00 100644 --- a/test/classes/PMA_Table_test.php +++ b/test/classes/PMA_Table_test.php @@ -83,5 +83,19 @@ class PMA_Table_Test extends PHPUnit_Framework_TestCase $table->getColumns() ); } + + /** + * Test getting unique columns + * + * @return void + */ + public function testUniqueColumns() + { + $table = new PMA_Table('table1', 'pma_test'); + $this->assertEquals( + array(), + $table->getUniqueColumns() + ); + } } From 1515c6c8e35ac35c0acc897b5d66ed1fbc16f73b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Fri, 19 Oct 2012 11:19:38 +0200 Subject: [PATCH 5/5] Add test for name validation --- test/classes/PMA_Table_test.php | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/classes/PMA_Table_test.php b/test/classes/PMA_Table_test.php index fc90cbaa00..6c2033d4e4 100644 --- a/test/classes/PMA_Table_test.php +++ b/test/classes/PMA_Table_test.php @@ -97,5 +97,38 @@ class PMA_Table_Test extends PHPUnit_Framework_TestCase $table->getUniqueColumns() ); } + + /** + * Test name validation + * + * @param string $name name to test + * @param boolena $result expected result + * + * @return void + * + * @dataProvider dataValidateName + */ + public function testValidateName($name, $result) + { + $this->assertEquals( + $result, + PMA_Table::isValidName($name) + ); + } + + /** + * Data provider for name validation + * + * @return array with test data + */ + public function dataValidateName() + { + return array( + array('test', True), + array('te/st', False), + array('te.st', False), + array('te\\st', False), + ); + } }