From 532d85ed26fe96536e0d5b6d5e05ef278b296237 Mon Sep 17 00:00:00 2001 From: xmujay Date: Thu, 4 Jul 2013 20:36:51 +0800 Subject: [PATCH 1/3] Unit test for PMA_server_collations --- test/libraries/PMA_server_collations_test.php | 157 ++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 test/libraries/PMA_server_collations_test.php diff --git a/test/libraries/PMA_server_collations_test.php b/test/libraries/PMA_server_collations_test.php new file mode 100644 index 0000000000..f7e75a62d5 --- /dev/null +++ b/test/libraries/PMA_server_collations_test.php @@ -0,0 +1,157 @@ + array("English", "US-ENGLISH"), + "ch" => array("Chinese", "TW-Chinese") +); +$GLOBALS['text_dir'] = "text_dir"; + +//$_SESSION +require_once 'libraries/Theme.class.php'; +$_SESSION['PMA_Theme'] = PMA_Theme::load('./themes/pmahomme'); + +require_once 'libraries/Util.class.php'; +require_once 'libraries/php-gettext/gettext.inc'; +require_once 'libraries/url_generating.lib.php'; +require_once 'libraries/Tracker.class.php'; +require_once 'libraries/Message.class.php'; +require_once 'libraries/sanitizing.lib.php'; +require_once 'libraries/sqlparser.lib.php'; +require_once 'libraries/js_escape.lib.php'; +require_once 'libraries/database_interface.inc.php'; +require_once 'libraries/server_common.inc.php'; +require_once 'libraries/mysql_charsets.inc.php'; +require_once 'libraries/server_collations.lib.php'; + +class PMA_ServerCollations_Test extends PHPUnit_Framework_TestCase +{ + /** + * Prepares environment for the test. + * + * @return void + */ + public function setUp() + { + //$_REQUEST + $_REQUEST['log'] = "index1"; + $_REQUEST['pos'] = 3; + + //$GLOBALS + $GLOBALS['cfg']['MaxRows'] = 10; + $GLOBALS['is_ajax_request'] = true; + $GLOBALS['cfg']['ServerDefault'] = "server"; + $GLOBALS['cfg']['RememberSorting'] = true; + $GLOBALS['cfg']['SQP'] = array(); + $GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 1000; + $GLOBALS['cfg']['ShowSQL'] = true; + $GLOBALS['cfg']['SQP']['fmtType'] = 'none'; + $GLOBALS['cfg']['TableNavigationLinksMode'] = 'icons'; + $GLOBALS['cfg']['LimitChars'] = 100; + + $GLOBALS['table'] = "table"; + $GLOBALS['pmaThemeImage'] = 'image'; + } + + /** + * Test for PMA_getHtmlForCharsets + * + * @return void + */ + public function testPMA_getHtmlForCharsets() + { + global $mysql_charsets, $mysql_collations, $mysql_charsets_descriptions, + $mysql_default_collations, $mysql_collations_available; + + //Mock DBI + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + //expects return value + $result = array( + array( + "SHOW BINLOG EVENTS IN 'index1' LIMIT 3, 10", + null, + 1, + true, + array("log1"=>"logd") + ), + array( + array("log2"=>"logb"), + null, + 0, + false, + 'executed' + ) + ); + $value = array( + 'Info' => "index1_Info", + 'Log_name' => "index1_Log_name", + 'Pos' => "index1_Pos", + 'Event_type' => "index1_Event_type", + 'End_log_pos' => "index1_End_log_pos", + 'Server_id' => "index1_Server_id", + ); + $count = 3; + + //expects functions + + $GLOBALS['dbi'] = $dbi; + + //Call the test function + $html = PMA_getHtmlForCharsets( + $mysql_charsets, + $mysql_collations, + $mysql_charsets_descriptions, + $mysql_default_collations, + $mysql_collations_available + ); + + //validate 1: Charset HTML + $this->assertContains( + '
', + $html + ); + $this->assertContains( + __('Collation'), + $html + ); + $this->assertContains( + __('Description'), + $html + ); + //validate 2: Charset Item + $this->assertContains( + 'utf8_bin', + $html + ); + $this->assertContains( + 'Unicode (multilingual), Binary', + $html + ); + $this->assertContains( + 'utf8_general_ci', + $html + ); + $this->assertContains( + 'Unicode (multilingual), case-insensitive', + $html + ); + } +} From becf6d5dee268cc5668f07eb3c97259c4afc98bc Mon Sep 17 00:00:00 2001 From: xmujay Date: Thu, 4 Jul 2013 21:21:17 +0800 Subject: [PATCH 2/3] 1 add mock date for PMA_server_collations_test 2 add test for PMA_server_plugins --- test/libraries/PMA_server_collations_test.php | 72 ++++---- test/libraries/PMA_server_plugins_test.php | 162 ++++++++++++++++++ 2 files changed, 199 insertions(+), 35 deletions(-) create mode 100644 test/libraries/PMA_server_plugins_test.php diff --git a/test/libraries/PMA_server_collations_test.php b/test/libraries/PMA_server_collations_test.php index f7e75a62d5..0545523593 100644 --- a/test/libraries/PMA_server_collations_test.php +++ b/test/libraries/PMA_server_collations_test.php @@ -75,42 +75,36 @@ class PMA_ServerCollations_Test extends PHPUnit_Framework_TestCase */ public function testPMA_getHtmlForCharsets() { - global $mysql_charsets, $mysql_collations, $mysql_charsets_descriptions, - $mysql_default_collations, $mysql_collations_available; + $mysql_charsets = array("armscii8", "ascii", "big5", "binary"); + $mysql_collations = array( + "armscii8" => array("armscii8"), + "ascii" => array("ascii"), + "big5" => array("big5"), + "binary" => array("binary"), + ); + $mysql_charsets_descriptions = array( + "armscii8" => "PMA_armscii8_general_ci", + "ascii" => "PMA_ascii_general_ci", + "big5" => "PMA_big5_general_ci", + "binary" => "PMA_binary_general_ci", + ); + $mysql_default_collations = array( + "armscii8" => "armscii8", + "ascii" => "ascii", + "big5" => "big5", + "binary" => "binary", + ); + $mysql_collations_available = array( + "armscii8" => true, + "ascii" => true, + "big5" => true, + "binary" => true, + ); //Mock DBI $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); - - //expects return value - $result = array( - array( - "SHOW BINLOG EVENTS IN 'index1' LIMIT 3, 10", - null, - 1, - true, - array("log1"=>"logd") - ), - array( - array("log2"=>"logb"), - null, - 0, - false, - 'executed' - ) - ); - $value = array( - 'Info' => "index1_Info", - 'Log_name' => "index1_Log_name", - 'Pos' => "index1_Pos", - 'Event_type' => "index1_Event_type", - 'End_log_pos' => "index1_End_log_pos", - 'Server_id' => "index1_Server_id", - ); - $count = 3; - - //expects functions $GLOBALS['dbi'] = $dbi; @@ -138,19 +132,27 @@ class PMA_ServerCollations_Test extends PHPUnit_Framework_TestCase ); //validate 2: Charset Item $this->assertContains( - 'utf8_bin', + 'PMA_armscii8_general_ci', $html ); $this->assertContains( - 'Unicode (multilingual), Binary', + 'armscii8', $html ); $this->assertContains( - 'utf8_general_ci', + 'PMA_ascii_general_ci', $html ); $this->assertContains( - 'Unicode (multilingual), case-insensitive', + 'ascii', + $html + ); + $this->assertContains( + 'PMA_big5_general_ci', + $html + ); + $this->assertContains( + 'big5', $html ); } diff --git a/test/libraries/PMA_server_plugins_test.php b/test/libraries/PMA_server_plugins_test.php new file mode 100644 index 0000000000..b289cc0aac --- /dev/null +++ b/test/libraries/PMA_server_plugins_test.php @@ -0,0 +1,162 @@ +getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $GLOBALS['dbi'] = $dbi; + + //Call the test function + /** + * Prepare plugin list + */ + + $plugins = array(); + $modules = array(); + + $row = array(); + $row["plugin_name"] = "plugin_name1"; + $row["plugin_type"] = "plugin_type1"; + $row["module_name"] = "module_name1"; + $row["module_library"] = "module_library1"; + $row["module_version"] = "module_version1"; + $row["module_author"] = "module_author1"; + $row["module_license"] = "module_license1"; + $row["module_description"] = "module_description1"; + $row["is_active"] = true; + $plugins[$row['plugin_type']][] = $row; + $modules[$row['module_name']]['info'] = $row; + $modules[$row['module_name']]['plugins'][$row['plugin_type']][] = $row; + + + $html = PMA_getPluginAndModuleInfo($plugins, $modules); + + + + //validate 1: PMA_getPluginTab + $this->assertContains( + 'Plugins', + $html + ); + //validate 2: PMA_getModuleTab + $this->assertContains( + 'Modules', + $html + ); + //validate 3:Items + $this->assertContains( + 'Plugin', + $html + ); + $this->assertContains( + 'Module', + $html + ); + $this->assertContains( + 'Plugin', + $html + ); + $this->assertContains( + 'Library', + $html + ); + $this->assertContains( + 'Plugin', + $html + ); + $this->assertContains( + 'Version', + $html + ); + $this->assertContains( + 'Author', + $html + ); + $this->assertContains( + 'License', + $html + ); + + //validate 4: one Item HTML + $this->assertContains( + 'plugin_name1', + $html + ); + $this->assertContains( + 'module_library1', + $html + ); + $this->assertContains( + 'module_version1', + $html + ); + $this->assertContains( + 'module_description1', + $html + ); + $this->assertContains( + 'module_author1', + $html + ); + } +} From 73f9ae3c557dddbfa382e4ee15305edd5c85257e Mon Sep 17 00:00:00 2001 From: xmujay Date: Thu, 4 Jul 2013 22:52:41 +0800 Subject: [PATCH 3/3] add $GLOBALS['cfg']['DBG']['sql'] = false; for UI testing --- test/libraries/PMA_server_collations_test.php | 2 +- test/libraries/PMA_server_plugins_test.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/libraries/PMA_server_collations_test.php b/test/libraries/PMA_server_collations_test.php index 0545523593..d9b03377b6 100644 --- a/test/libraries/PMA_server_collations_test.php +++ b/test/libraries/PMA_server_collations_test.php @@ -21,7 +21,7 @@ $GLOBALS['available_languages']= array( "ch" => array("Chinese", "TW-Chinese") ); $GLOBALS['text_dir'] = "text_dir"; - +$GLOBALS['cfg']['DBG']['sql'] = false; //$_SESSION require_once 'libraries/Theme.class.php'; $_SESSION['PMA_Theme'] = PMA_Theme::load('./themes/pmahomme'); diff --git a/test/libraries/PMA_server_plugins_test.php b/test/libraries/PMA_server_plugins_test.php index b289cc0aac..375edbe4d4 100644 --- a/test/libraries/PMA_server_plugins_test.php +++ b/test/libraries/PMA_server_plugins_test.php @@ -43,6 +43,7 @@ class PMA_ServerPlugins_Test extends PHPUnit_Framework_TestCase $GLOBALS['cfg']['SQP']['fmtType'] = 'none'; $GLOBALS['cfg']['TableNavigationLinksMode'] = 'icons'; $GLOBALS['cfg']['LimitChars'] = 100; + $GLOBALS['cfg']['DBG']['sql'] = false; $GLOBALS['table'] = "table"; $GLOBALS['pmaThemeImage'] = 'image'; @@ -87,8 +88,7 @@ class PMA_ServerPlugins_Test extends PHPUnit_Framework_TestCase $plugins[$row['plugin_type']][] = $row; $modules[$row['module_name']]['info'] = $row; $modules[$row['module_name']]['plugins'][$row['plugin_type']][] = $row; - - + $html = PMA_getPluginAndModuleInfo($plugins, $modules);