From 1edf192cc6eca097258358c60c7b2e3dea792730 Mon Sep 17 00:00:00 2001 From: Kasun Chathuranga Date: Tue, 13 Aug 2013 15:02:30 +0530 Subject: [PATCH 1/3] Unit tests for navigationhiding --- libraries/navigation/Navigation.class.php | 4 +- .../navigation/PMA_Navigation_test.php | 150 ++++++++++++++++++ .../PMA_Node_DatabaseChild_test.php | 92 +++++++++++ 3 files changed, 244 insertions(+), 2 deletions(-) create mode 100644 test/classes/navigation/PMA_Navigation_test.php create mode 100644 test/classes/navigation/PMA_Node_DatabaseChild_test.php diff --git a/libraries/navigation/Navigation.class.php b/libraries/navigation/Navigation.class.php index 98665ce07d..6f7bd4db6e 100644 --- a/libraries/navigation/Navigation.class.php +++ b/libraries/navigation/Navigation.class.php @@ -118,7 +118,7 @@ class PMA_Navigation $navTable = PMA_Util::backquote($GLOBALS['cfgRelation']['db']) . "." . PMA_Util::backquote($GLOBALS['cfgRelation']['navigationhiding']); $sqlQuery = "DELETE FROM " . $navTable - . " WHERE " + . " WHERE" . " `username`='" . PMA_Util::sqlAddSlashes($GLOBALS['cfg']['Server']['user']) . "'" . " AND `item_name`='" . PMA_Util::sqlAddSlashes($itemName) . "'" @@ -150,7 +150,7 @@ class PMA_Navigation . "." . PMA_Util::backquote($GLOBALS['cfgRelation']['navigationhiding']); $sqlQuery = "SELECT `item_name`, `item_type` FROM " . $navTable . " WHERE `username`='" - . PMA_Util::sqlAddSlashes($GLOBALS['cfg']['Server']['user']) ."'" + . PMA_Util::sqlAddSlashes($GLOBALS['cfg']['Server']['user']) . "'" . " AND `db_name`='" . PMA_Util::sqlAddSlashes($dbName) . "'" . " AND `table_name`='" . (! empty($tableName) ? PMA_Util::sqlAddSlashes($tableName) : '') . "'"; diff --git a/test/classes/navigation/PMA_Navigation_test.php b/test/classes/navigation/PMA_Navigation_test.php new file mode 100644 index 0000000000..8a515d46ad --- /dev/null +++ b/test/classes/navigation/PMA_Navigation_test.php @@ -0,0 +1,150 @@ +object = new PMA_Navigation(); + $GLOBALS['cfgRelation']['db'] = 'pmadb'; + $GLOBALS['cfgRelation']['navigationhiding'] = 'navigationhiding'; + $GLOBALS['cfg']['Server']['user'] = 'user'; + } + + /** + * Tears down the fixture. + * + * @access protected + * @return void + */ + protected function tearDown() + { + unset($this->object); + } + + /** + * Tests hideNavigationItem() method. + * + * @return void + * @test + */ + public function testHideNavigationItem() + { + $expectedQuery = "INSERT INTO `pmadb`.`navigationhiding`" + . "(`username`, `item_name`, `item_type`, `db_name`, `table_name`)" + . " VALUES ('user','itemName','itemType','db','')"; + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + $dbi->expects($this->once()) + ->method('tryQuery') + ->with($expectedQuery); + $GLOBALS['dbi'] = $dbi; + $this->object->hideNavigationItem('itemName', 'itemType', 'db'); + } + + /** + * Tests unhideNavigationItem() method. + * + * @return void + * @test + */ + public function testUnhideNavigationItem() + { + $expectedQuery = "DELETE FROM `pmadb`.`navigationhiding`" + . " WHERE `username`='user' AND `item_name`='itemName'" + . " AND `item_type`='itemType' AND `db_name`='db'"; + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + $dbi->expects($this->once()) + ->method('tryQuery') + ->with($expectedQuery); + $GLOBALS['dbi'] = $dbi; + $this->object->unhideNavigationItem('itemName', 'itemType', 'db'); + } + + /** + * Tests getItemUnhideDialog() method. + * + * @return void + * @test + */ + public function testGetItemUnhideDialog() + { + $expectedQuery = "SELECT `item_name`, `item_type`" + . " FROM `pmadb`.`navigationhiding`" + . " WHERE `username`='user' AND `db_name`='db' AND `table_name`=''"; + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + $dbi->expects($this->once()) + ->method('tryQuery') + ->with($expectedQuery) + ->will($this->returnValue(true)); + $dbi->expects($this->at(1)) + ->method('fetchArray') + ->will( + $this->returnValue( + array( + 'item_name' => 'tableName', + 'item_type' => 'table' + ) + ) + ); + $dbi->expects($this->at(2)) + ->method('fetchArray') + ->will( + $this->returnValue( + array( + 'item_name' => 'viewName', + 'item_type' => 'view' + ) + ) + ); + $dbi->expects($this->at(3)) + ->method('fetchArray') + ->will($this->returnValue(false)); + $dbi->expects($this->once()) + ->method('freeResult'); + $GLOBALS['dbi'] = $dbi; + + $html = $this->object->getItemUnhideDialog('db'); + $this->assertContains( + 'tableName<', + $html + ); + $this->assertContains( + '', + $html + ); + } +} +?> \ No newline at end of file diff --git a/test/classes/navigation/PMA_Node_DatabaseChild_test.php b/test/classes/navigation/PMA_Node_DatabaseChild_test.php new file mode 100644 index 0000000000..d88fabe5e6 --- /dev/null +++ b/test/classes/navigation/PMA_Node_DatabaseChild_test.php @@ -0,0 +1,92 @@ +getPath(); + $GLOBALS['pmaThemeImage'] = 'theme/'; + $GLOBALS['cfg']['DefaultTabDatabase'] = 'db_structure.php'; + $GLOBALS['server'] = 1; + $GLOBALS['cfg']['ServerDefault'] = 1; + $GLOBALS['token'] = 'token'; + $_SESSION['relation'][1]['navwork'] = true; + $this->object = $this->getMockForAbstractClass( + 'Node_DatabaseChild', array('child') + ); + } + + /** + * Tears down the fixture. + * + * @access protected + * @return void + */ + protected function tearDown() + { + unset($this->object); + } + + /** + * Tests getHtmlForControlButtons() method + * + * @return void + * @test + */ + public function testGetHtmlForControlButtons() + { + $parent = PMA_NodeFactory::getInstance('Node_Database', 'parent'); + $parent->addChild($this->object); + $this->object->expects($this->once()) + ->method('getItemType') + ->will($this->returnValue('itemType')); + $html = $this->object->getHtmlForControlButtons(); + + $this->assertStringStartsWith( + '', + $html + ); + $this->assertStringEndsWith( + '', + $html + ); + $this->assertContains( + '', + $html + ); + } +} +?> \ No newline at end of file From 6d0b3e652f3275fe3eb3f40fa7a28e023c8eafe0 Mon Sep 17 00:00:00 2001 From: Kasun Chathuranga Date: Tue, 13 Aug 2013 15:11:17 +0530 Subject: [PATCH 2/3] Fix failing tests --- test/classes/navigation/PMA_Navigation_test.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/classes/navigation/PMA_Navigation_test.php b/test/classes/navigation/PMA_Navigation_test.php index 8a515d46ad..8d2754dd34 100644 --- a/test/classes/navigation/PMA_Navigation_test.php +++ b/test/classes/navigation/PMA_Navigation_test.php @@ -112,8 +112,8 @@ class PMA_NavigationTest extends PHPUnit_Framework_TestCase ->will( $this->returnValue( array( - 'item_name' => 'tableName', - 'item_type' => 'table' + 'item_name' => 'tableName', + 'item_type' => 'table' ) ) ); @@ -122,8 +122,8 @@ class PMA_NavigationTest extends PHPUnit_Framework_TestCase ->will( $this->returnValue( array( - 'item_name' => 'viewName', - 'item_type' => 'view' + 'item_name' => 'viewName', + 'item_type' => 'view' ) ) ); @@ -136,11 +136,11 @@ class PMA_NavigationTest extends PHPUnit_Framework_TestCase $html = $this->object->getItemUnhideDialog('db'); $this->assertContains( - 'tableName<', + 'tableName', $html ); $this->assertContains( - '', $html From 95309515f0079931a5d544aef5c5ba38af4aa121 Mon Sep 17 00:00:00 2001 From: Kasun Chathuranga Date: Thu, 15 Aug 2013 11:57:28 +0530 Subject: [PATCH 3/3] Renamed function --- test/classes/navigation/PMA_Navigation_test.php | 2 +- test/classes/navigation/PMA_Node_DatabaseChild_test.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/classes/navigation/PMA_Navigation_test.php b/test/classes/navigation/PMA_Navigation_test.php index 8d2754dd34..195139005d 100644 --- a/test/classes/navigation/PMA_Navigation_test.php +++ b/test/classes/navigation/PMA_Navigation_test.php @@ -140,7 +140,7 @@ class PMA_NavigationTest extends PHPUnit_Framework_TestCase $html ); $this->assertContains( - '', $html diff --git a/test/classes/navigation/PMA_Node_DatabaseChild_test.php b/test/classes/navigation/PMA_Node_DatabaseChild_test.php index d88fabe5e6..4941ae031b 100644 --- a/test/classes/navigation/PMA_Node_DatabaseChild_test.php +++ b/test/classes/navigation/PMA_Node_DatabaseChild_test.php @@ -82,7 +82,7 @@ class Node_DatabaseChildTest extends PHPUnit_Framework_TestCase $html ); $this->assertContains( - '', $html