diff options
author | Smita Kumari <kumarismita62@gmail.com> | 2014-07-20 14:51:42 +0400 |
---|---|---|
committer | Smita Kumari <kumarismita62@gmail.com> | 2014-07-20 18:43:24 +0400 |
commit | 4fc196cc85d37714e3b7a2ede3ef6798268fa8f6 (patch) | |
tree | 96bbb160c255e560992f8d83e968a9c952e808bf /test | |
parent | 9d83647c4efb84db9bc70e45c54a8a6275fb3531 (diff) |
Improve unit tests for central columns using MOCK DBI
Signed-off-by: Smita Kumari <kumarismita62@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/libraries/PMA_central_columns_test.php | 239 |
1 files changed, 225 insertions, 14 deletions
diff --git a/test/libraries/PMA_central_columns_test.php b/test/libraries/PMA_central_columns_test.php index d94809c27b..49d1a56d4c 100644 --- a/test/libraries/PMA_central_columns_test.php +++ b/test/libraries/PMA_central_columns_test.php @@ -22,6 +22,7 @@ require_once 'libraries/tbl_columns_definition_form.lib.php'; require_once 'libraries/Types.class.php'; require_once 'libraries/mysql_charsets.inc.php'; require_once 'libraries/central_columns.lib.php'; +require_once 'libraries/sqlparser.lib.php'; /** * tests for central_columns.lib.php @@ -46,11 +47,58 @@ class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase $GLOBALS['cfg']['ActionLinksMode'] = 'icons'; $GLOBALS['pmaThemeImage'] = 'image'; $GLOBALS['cfg']['CharEditing'] = ''; + $GLOBALS['cfg']['LimitChars'] = 50; + $GLOBALS['db'] = 'PMA_db'; + $GLOBALS['table'] = 'PMA_table'; //$_SESSION $GLOBALS['server'] = 1; $_SESSION['PMA_Theme'] = PMA_Theme::load('./themes/pmahomme'); $_SESSION['PMA_Theme'] = new PMA_Theme(); + $_SESSION['relation'][1] = array( + 'central_columnswork'=>true, 'relwork'=>1, + 'db'=>'phpmyadmin', 'relation'=>'pma_central_columns' + ); + //mock DBI + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + $GLOBALS['dbi'] = $dbi; + // set expectations + $dbi->expects($this->any()) + ->method('selectDb') + ->will($this->returnValue(true)); + $dbi->expects($this->any()) + ->method('getColumns') + ->will( + $this->returnValue( + array( + "id"=>array("Type"=>"integer", "Null"=>"NO"), + "col1"=>array("Type"=>'varchar(100)', "Null"=>"YES"), + "col2"=>array("Type"=>'DATETIME', "Null"=>"NO") + ) + ) + ); + $dbi->expects($this->any()) + ->method('getColumnNames') + ->will($this->returnValue(array("id", "col1", "col2"))); + $dbi->expects($this->any()) + ->method('fetchResult') + ->will($this->returnValue(array("id", "col1"))); + $dbi->expects($this->any()) + ->method('tryQuery') + ->will($this->returnValue(true)); + $dbi->expects($this->any()) + ->method('fetchValue') + ->will( + $this->returnValue('PMA_table=CREATE table `PMA_table` (id integer)') + ); + $dbi->expects($this->any()) + ->method('getTables') + ->will( + $this->returnValue(array("PMA_table", "PMA_table1", "PMA_table2")) + ); + } /** @@ -60,7 +108,12 @@ class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase */ public function testPMACentralColumnsGetParams() { - $this->assertFalse( + $this->assertSame( + array( + 'user' => 'pma_user', + 'db' => 'phpmyadmin', + 'table' => 'pma_central_columns' + ), PMA_centralColumnsGetParams() ); } @@ -73,9 +126,13 @@ class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase public function testPMAGetColumnsList() { $this->assertEquals( - array(), + array("id", "col1"), PMA_getColumnsList('phpmyadmin') ); + $this->assertEquals( + array("id", "col1"), + PMA_getColumnsList('phpmyadmin', 0, 0) + ); } /** @@ -86,7 +143,7 @@ class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase function testPMAGetCentralColumnsCount() { $this->assertEquals( - 0, + 'id', PMA_getCentralColumnsCount('phpmyadmin') ); } @@ -98,13 +155,15 @@ class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase */ public function testPMASyncUniqueColumns() { - $field_select = array("column1"); + $field_select = array("col1"); + $_POST['db'] = 'PMA_db'; + $_POST['table'] = 'PMA_table'; $this->assertInstanceOf( - 'PMA_Message', PMA_syncUniqueColumns($field_select) + 'PMA_Message', PMA_syncUniqueColumns($field_select, false) ); - $field_select = array("table1"); + $field_select = array("PMA_table"); $this->assertInstanceOf( - 'PMA_Message', PMA_syncUniqueColumns($field_select, true) + 'PMA_Message', PMA_syncUniqueColumns($field_select) ); } @@ -115,12 +174,17 @@ class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase */ public function testPMADeleteColumnsFromList() { - $field_select = array("phpmydmin"); + $field_select = array("col1"); + $_POST['db'] = 'PMA_db'; + $_POST['table'] = 'PMA_table'; + $this->assertTrue( + PMA_deleteColumnsFromList($field_select, false) + ); $this->assertInstanceOf( - 'PMA_Message', PMA_deleteColumnsFromList($field_select) + 'PMA_Message', PMA_deleteColumnsFromList(array('column1'), false) ); $this->assertInstanceOf( - 'PMA_Message', PMA_deleteColumnsFromList($field_select, true) + 'PMA_Message', PMA_deleteColumnsFromList(array('PMA_table')) ); } @@ -131,23 +195,88 @@ class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase */ public function testPMAMakeConsistentWithList() { + $dbi = $GLOBALS['dbi']; + $dbitmp = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + $GLOBALS['dbi'] = $dbitmp; + $dbitmp->expects($this->any()) + ->method('selectDb') + ->will($this->returnValue(true)); + $dbitmp->expects($this->any()) + ->method('getColumnNames') + ->will($this->returnValue(array("id", "col1", "col2"))); + $dbitmp->expects($this->any()) + ->method('tryQuery') + ->will($this->returnValue(true)); + $dbitmp->expects($this->any()) + ->method('fetchResult') + ->will( + $this->returnValue( + array( + array( + 'col_name'=>"id", "col_type"=>'integer', + 'col_length'=>0, 'col_isNull'=>0, 'col_extra'=>'', + 'col_default'=>1 + ), + array('col_name'=>"col1", 'col_type'=>'varchar', + 'col_length'=>100, 'col_isNull'=>1, 'col_extra'=>'', + 'col_default'=>1 + ), + array( + 'col_name'=>"col2", 'col_type'=>'DATETIME', + 'col_length'=>0, 'col_isNull'=>1, 'col_extra'=>'', + 'col_default'=>'CURRENT_TIMESTAMP' + ) + ) + ) + ); + $dbitmp->expects($this->any()) + ->method('fetchValue') + ->will( + $this->returnValue('PMA_table=CREATE table `PMA_table` (id integer)') + ); $this->assertTrue( - PMA_makeConsistentWithList("phpmyadmin", array()) + PMA_makeConsistentWithList("phpmyadmin", array('PMA_table')) ); + $GLOBALS['dbi'] = $dbi; } /** + * Test for PMA_getCentralColumnsFromTable + * + * @return void + */ + public function testPMAGetCentralColumnsFromTable() + { + $db = 'PMA_db'; + $table = 'PMA_table'; + $this->assertEquals( + array("id", "col1"), + PMA_getCentralColumnsFromTable($db, $table) + ); + $this->assertEquals( + array("id", "col1"), + PMA_getCentralColumnsFromTable($db, $table, true) + ); + } + /** * Test for PMA_updateOneColumn * * @return void */ public function testPMAUpdateOneColumn() { - $this->assertInstanceOf( - 'PMA_Message', PMA_updateOneColumn( + $this->assertTrue( + PMA_updateOneColumn( "phpmyadmin", "", "", "", "", "", "", "", "" ) ); + $this->assertTrue( + PMA_updateOneColumn( + "phpmyadmin", "col1", "", "", "", "", "", "", "" + ) + ); } /** @@ -277,9 +406,13 @@ class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase public function testPMAGetCentralColumnsListRaw() { $this->assertEquals( - array(), + json_encode(array("id", "col1")), PMA_getCentralColumnsListRaw('phpmyadmin', 'pma_central_columns') ); + $this->assertEquals( + json_encode(array("id", "col1")), + PMA_getCentralColumnsListRaw('phpmyadmin', '') + ); } /** @@ -302,4 +435,82 @@ class PMA_Central_Columns_Test extends PHPUnit_Framework_TestCase $result ); } + + /** + * Test for PMA_configErrorMessage + * + * @return void + */ + public function testPMAConfigErrorMessage() + { + $this->assertInstanceOf( + 'PMA_Message', + PMA_configErrorMessage() + ); + } + + /** + * Test for PMA_findExistingColNames + * + * @return void + */ + public function testPMAFindExistingColNames() + { + $this->assertEquals( + array('id', 'col1'), + PMA_findExistingColNames('phpmyadmin', 'col1', true) + ); + } + + /** + * Test for PMA_getHTMLforTableDropdown + * + * @return void + */ + public function testPMAGetHTMLforTableDropdown() + { + $db = 'PMA_db'; + $result = PMA_getHTMLforTableDropdown($db); + $this->assertTag(array('tag'=>'select', 'id'=>'table-select'), $result); + $this->assertTag( + array( + 'tag'=>'option', 'attributes'=>array('value'=>'PMA_table'), + 'content'=>'PMA_table' + ), $result + ); + } + + /** + * Test for PMA_getHTMLforColumnDropdown + * + * @return void + */ + public function testPMAGetHTMLforColumnDropdown() + { + $db = 'PMA_db'; + $selected_tbl = 'PMA_table'; + $result = PMA_getHTMLforColumnDropdown($db, $selected_tbl); + $this->assertEquals( + '<option value="col2">col2</option>', + $result + ); + } + + /** + * Test for PMA_getHTMLforAddCentralColumn + * + * @return void + */ + public function testPMAGetHTMLforAddCentralColumn() + { + $result = PMA_getHTMLforAddCentralColumn(20, 0, 'phpmyadmin'); + $this->assertTag(array('tag'=>'table', 'tag'=>'form'), $result); + $this->assertContains( + PMA_URL_getHiddenInputs('phpmyadmin') + . '<input type="hidden" name="add_column" value="add">' + . '<input type="hidden" name="pos" value="0" />' + . '<input type="hidden" name="total_rows" value="20"/>', + $result + ); + } }
\ No newline at end of file |