diff --git a/libraries/navigation/Navigation.class.php b/libraries/navigation/Navigation.class.php index ec49c73013..17219de0e1 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..195139005d --- /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..4941ae031b --- /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