public function testGetDataWithEnabledISAndGroupingEnabled()
{
$pos = 10;
$limit = 20;
$GLOBALS['cfg']['Server']['DisableIS'] = false;
$GLOBALS['cfg']['NavigationTreeEnableGrouping'] = true;
$GLOBALS['cfg']['FirstLevelNavigationItems'] = $limit;
$GLOBALS['cfg']['NavigationTreeDbSeparator'] = '_';
$expectedSql = "SELECT `SCHEMA_NAME` ";
$expectedSql .= "FROM `INFORMATION_SCHEMA`.`SCHEMATA`, ";
$expectedSql .= "(";
$expectedSql .= "SELECT DB_first_level ";
$expectedSql .= "FROM ( ";
$expectedSql .= "SELECT DISTINCT SUBSTRING_INDEX(SCHEMA_NAME, ";
$expectedSql .= "'_', 1) ";
$expectedSql .= "DB_first_level ";
$expectedSql .= "FROM INFORMATION_SCHEMA.SCHEMATA ";
$expectedSql .= "WHERE TRUE ";
$expectedSql .= ") t ";
$expectedSql .= "ORDER BY DB_first_level ASC ";
$expectedSql .= "LIMIT {$pos}, {$limit}";
$expectedSql .= ") t2 ";
$expectedSql .= "WHERE TRUE AND 1 = LOCATE(CONCAT(DB_first_level, '_'), ";
$expectedSql .= "CONCAT(SCHEMA_NAME, '_')) ";
$expectedSql .= "ORDER BY SCHEMA_NAME ASC";
// It would have been better to mock _getWhereClause method
// but strangely, mocking private methods is not supported in PHPUnit
$node = NodeFactory::getInstance();
$dbi = $this->getMockBuilder('PMA\\libraries\\DatabaseInterface')->disableOriginalConstructor()->getMock();
$dbi->expects($this->once())->method('fetchResult')->with($expectedSql);
$dbi->expects($this->any())->method('escapeString')->will($this->returnArgument(0));
$GLOBALS['dbi'] = $dbi;
$node->getData('', $pos);
}