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( + '