_object = $this->getMock( 'PMA_TableSearch', array('_loadTableInfo'), array(), '', false ); $reflection = new \ReflectionClass('PMA_TableSearch'); // set database, table names $attrDb = $reflection->getProperty('_db'); $attrDb->setAccessible(true); $attrDb->setValue($this->_object, 'dbName'); $attrTable = $reflection->getProperty('_table'); $attrTable->setAccessible(true); $attrTable->setValue($this->_object, 'tableName'); // set column names list $attrColNames = $reflection->getProperty('_columnNames'); $attrColNames->setAccessible(true); $columnNames = array('column1'); $attrColNames->setValue($this->_object, $columnNames); } /** * Tests getReplacePreview() method * * @return void * @group medium */ public function testGetReplacePreview() { //mock DBI $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $find = 'findValue'; $replaceWith = 'replaceWithValue'; $charSet = 'charSetValue'; $expectedQuery = "SELECT `column1`, REPLACE(`column1`, '" . $find . "', '" . $replaceWith . "'), COUNT(*) FROM `dbName`.`tableName` WHERE `column1`" . " LIKE '%" . $find . "%' COLLATE " . $charSet . "_bin GROUP BY" . " `column1` ORDER BY `column1` ASC"; // set expectations $dbi->expects($this->once()) ->method('query') ->with($expectedQuery); $dbi->expects($this->at(1)) ->method('fetchRow') ->will($this->returnValue(array('val1', 'replace1', 5))); $dbi->expects($this->at(2)) ->method('fetchRow') ->will($this->returnValue(array('va<2', 'replac<2', 1))); $dbi->expects($this->at(3)) ->method('fetchRow') ->will($this->returnValue(false)); $GLOBALS['dbi'] = $dbi; $ret = $this->_object->getReplacePreview(0, $find, $replaceWith, $charSet); // assert whether hidden values are properly set $this->assertContains( '', $ret ); $this->assertContains( '', $ret ); $this->assertContains( '', $ret ); $this->assertContains( '', $ret ); // assert values displayed in the preview and escaping $this->assertContains( '