getMockBuilder('PMA\libraries\DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $GLOBALS['dbi'] = $dbi; // set expectations $dbi->expects($this->any()) ->method('selectDb') ->will($this->returnValue(true)); $dbi->expects($this->any()) ->method('getColumns') ->will( $this->returnValue( array( "id"=>array("Type"=>"integer"), "col1"=>array("Type"=>'varchar(100)'), "col2"=>array("Type"=>'DATETIME') ) ) ); $dbi->expects($this->any()) ->method('getColumnNames') ->will($this->returnValue(array("id", "col1", "col2"))); $map = array( array('PMA_db', 'PMA_table1', null, array()), array( 'PMA_db', 'PMA_table', null, array(array('Key_name'=>'PRIMARY', 'Column_name'=>'id')) ), array( 'PMA_db', 'PMA_table2', null, array( array('Key_name'=>'PRIMARY', 'Column_name'=>'id'), array('Key_name'=>'PRIMARY', 'Column_name'=>'col1') ) ), ); $dbi->expects($this->any()) ->method('getTableIndexes') ->will($this->returnValueMap($map)); $dbi->expects($this->any()) ->method('tryQuery') ->will($this->returnValue(true)); $dbi->expects($this->any()) ->method('fetchResult') ->will($this->returnValue(array(0))); } /** * Test for PMA_getHtmlForColumnsList * * @return void */ public function testPMAGetHtmlForColumnsList() { $db = "PMA_db"; $table= "PMA_table"; $this->assertContains( '', PMA_getHtmlForColumnsList($table, $db) ); $this->assertEquals( 'col1 [ varchar(100) ]
', PMA_getHtmlForColumnsList($table, $db, 'String', 'checkbox') ); } /** * Test for PMA_getHtmlForCreateNewColumn * * @return void */ public function testPMAGetHtmlForCreateNewColumn() { $db = "PMA_db"; $table= "PMA_table"; $num_fields = 1; $result = PMA_getHtmlForCreateNewColumn($num_fields, $db, $table); $this->assertContains( 'assertContains( "

" . __('First step of normalization (1NF)') . "

", $result ); $this->assertContains( "
assertContains("" . __('Step 1.'), $result); $this->assertContains( 'assertContains( 'assertContains( "assertInternalType('array', $result); $this->assertArrayHasKey('legendText', $result); $this->assertArrayHasKey('headText', $result); $this->assertArrayHasKey('subText', $result); $this->assertArrayHasKey('extra', $result); $this->assertArrayHasKey('primary_key', $result); $this->assertContains(__('Step 1.') . 3, $result['legendText']); $this->assertContains( PMA_getHtmlForColumnsList($db, $table, 'all', "checkbox"), $result['extra'] ); $this->assertContains( 'assertEquals(json_encode(array('id')), $result['primary_key']); } /** * Test for PMA_getHtmlFor2NFstep1 * * @return void */ public function testPMAGetHtmlFor2NFstep1() { $db = "PMA_db"; $table= "PMA_table"; $result = PMA_getHtmlFor2NFstep1($db, $table); $this->assertInternalType('array', $result); $this->assertArrayHasKey('legendText', $result); $this->assertArrayHasKey('headText', $result); $this->assertArrayHasKey('subText', $result); $this->assertArrayHasKey('extra', $result); $this->assertArrayHasKey('primary_key', $result); $this->assertContains(__('Step 2.') . 1, $result['legendText']); $this->assertEquals('id', $result['primary_key']); $result1 = PMA_getHtmlFor2NFstep1($db, "PMA_table2"); $this->assertEquals('id, col1', $result1['primary_key']); $this->assertContains( 'assertContains( 'array('col2')); $result = PMA_getHtmlForNewTables2NF($partialDependencies, $table); $this->assertContains( 'id = 'PMA_table'; $tablesName->col1 = 'PMA_table1'; $partialDependencies = array('id'=>array('col2')); $result = PMA_createNewTablesFor2NF( $partialDependencies, $tablesName, $table, $db ); $this->assertInternalType('array', $result); $this->assertArrayHasKey('legendText', $result); $this->assertArrayHasKey('headText', $result); $this->assertArrayHasKey('queryError', $result); $partialDependencies = array('id'=>array('col2'), 'col1'=>array('col2')); $result1 = PMA_createNewTablesFor2NF( $partialDependencies, $tablesName, $table, $db ); $this->assertArrayHasKey('extra', $result1); $this->assertEquals(__('End of step'), $result1['legendText']); $this->assertEquals('', $result1['extra']); } /** * Test for PMA_getHtmlForNewTables3NF * * @return void */ public function testPMAGetHtmlForNewTables3NF() { $tables= array("PMA_table"=>array('col1')); $db = 'PMA_db'; $dependencies = new stdClass(); $dependencies->col1 = array('col2'); $result = PMA_getHtmlForNewTables3NF($dependencies, $tables, $db); $this->assertEquals( array( 'html' => '', 'newTables' => array() ), $result ); $tables= array("PMA_table"=>array('col1', 'PMA_table')); $dependencies->PMA_table = array('col4', 'col5'); $result1 = PMA_getHtmlForNewTables3NF($dependencies, $tables, $db); $this->assertInternalType('array', $result1); $this->assertContains( 'assertEquals( array( 'PMA_table' => array ( 'PMA_table' => array ( 'pk' => 'col1', 'nonpk' => 'col2' ), 'table2' => array ( 'pk' => 'id', 'nonpk' => 'col4, col5' ) ) ), $result1['newTables'] ); } /** * Test for PMA_createNewTablesFor3NF * * @return void */ public function testPMACreateNewTablesFor3NF() { $db = 'PMA_db'; $cols = new stdClass(); $cols->pk = 'id'; $cols->nonpk = 'col1, col2'; $cols1 = new stdClass(); $cols1->pk = 'col2'; $cols1->nonpk = 'col3, col4'; $newTables = array('PMA_table'=>array('PMA_table'=>$cols, 'table1'=>$cols1)); $result = PMA_createNewTablesFor3NF( $newTables, $db ); $this->assertInternalType('array', $result); $this->assertArrayHasKey('legendText', $result); $this->assertArrayHasKey('headText', $result); $this->assertArrayHasKey('queryError', $result); $newTables1 = array(); $result1 = PMA_createNewTablesFor3NF( $newTables1, $db ); $this->assertArrayHasKey('queryError', $result1); $this->assertEquals(__('End of step'), $result1['legendText']); $this->assertEquals(false, $result1['queryError']); } /** * Test for PMA_moveRepeatingGroup * * @return void */ public function testPMAMoveRepeatingGroup() { $repeatingColumns = 'col1, col2'; $primary_columns = 'id,col1'; $newTable = 'PMA_newTable'; $newColumn = 'PMA_newCol'; $table= "PMA_table"; $db = 'PMA_db'; $result = PMA_moveRepeatingGroup( $repeatingColumns, $primary_columns, $newTable, $newColumn, $table, $db ); $this->assertInternalType('array', $result); $this->assertArrayHasKey('queryError', $result); $this->assertArrayHasKey('message', $result); $this->assertInstanceOf( 'PMA\libraries\Message', $result['message'] ); } /** * Test for PMA_getHtmlFor3NFstep1 * * @return void */ public function testPMAGetHtmlFor3NFstep1() { $db = "PMA_db"; $tables= array("PMA_table"); $result = PMA_getHtmlFor3NFstep1($db, $tables); $this->assertInternalType('array', $result); $this->assertArrayHasKey('legendText', $result); $this->assertArrayHasKey('headText', $result); $this->assertArrayHasKey('subText', $result); $this->assertArrayHasKey('extra', $result); $this->assertContains(__('Step 3.') . 1, $result['legendText']); $this->assertContains( 'assertContains( 'assertEquals( '', $result1['subText'] ); } /** * Test for PMA_getHtmlForNormalizetable * * @return void */ public function testPMAGetHtmlForNormalizetable() { $result = PMA_getHtmlForNormalizetable(); $this->assertContains( '
assertContains( '', $result ); $choices = array( '1nf' => __('First step of normalization (1NF)'), '2nf' => __('Second step of normalization (1NF+2NF)'), '3nf' => __('Third step of normalization (1NF+2NF+3NF)')); $html_tmp = PMA\libraries\Util::getRadioFields( 'normalizeTo', $choices, '1nf', true ); $this->assertContains($html_tmp, $result); } /** * Test for PMA_findPartialDependencies * * @return void */ public function testPMAFindPartialDependencies() { $table= "PMA_table2"; $db = 'PMA_db'; $result = PMA_findPartialDependencies($table, $db); $this->assertContains( '
assertContains(__('No partial dependencies found!'), $result); } /** * Test for PMA_getAllCombinationPartialKeys * * @return void */ public function testPMAGetAllCombinationPartialKeys() { $primaryKey = array('id', 'col1', 'col2'); $result = PMA_getAllCombinationPartialKeys($primaryKey); $this->assertEquals( array('', 'id', 'col1', 'col1,id', 'col2', 'col2,id', 'col2,col1'), $result ); } }