databases = new DataBaseMockForTblRelation(); $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); $GLOBALS['dbi'] = $dbi; } /** * Tests for PMA_generateRelationalDropdown() method. * * @return void * @test */ public function testGenerateRelationalDropdown() { // test for start tag $this->assertStringStartsWith( 'assertStringEndsWith( '', PMA_generateRelationalDropdown('name') ); // test for name $this->assertStringStartsWith( 'assertContains( '', PMA_generateRelationalDropdown('name', $values) ); // test for options and escaping $this->assertContains( '', PMA_generateRelationalDropdown('name', $values) ); // test for selected option $this->assertContains( '', PMA_generateRelationalDropdown('name', $values, 'value1') ); // test for selected value not found in values array and its escaping $this->assertContains( '', PMA_generateRelationalDropdown('name', $values, 'valu<4') ); } /** * Tests for PMA_generateDropdown() method. * * @return void * @test */ public function testPMAGenerateDropdown() { $dropdown_question = "dropdown_question"; $select_name = "select_name"; $choices = array("choice1", "choice2"); $selected_value = ""; $html_output = PMA_generateDropdown( $dropdown_question, $select_name, $choices, $selected_value ); $this->assertContains( htmlspecialchars($dropdown_question), $html_output ); $this->assertContains( htmlspecialchars($select_name), $html_output ); $this->assertContains( htmlspecialchars("choice1"), $html_output ); $this->assertContains( htmlspecialchars("choice2"), $html_output ); } /** * Tests for PMA_backquoteSplit() method. * * @return void * @test */ public function testPMABackquoteSplit() { $text = "test `PMA` Back `quote` Split"; $this->assertEquals( array('`PMA`', '`quote`'), PMA_backquoteSplit($text) ); } /** * Tests for PMA_getSQLToCreateForeignKey() method. * * @return void * @test */ public function testPMAGetSQLToCreateForeignKey() { $table = "PMA_table"; $field = array("PMA_field1", "PMA_field2"); $foreignDb = "foreignDb"; $foreignTable = "foreignTable"; $foreignField = array("foreignField1", "foreignField2"); $sql = PMA_getSQLToCreateForeignKey( $table, $field, $foreignDb, $foreignTable, $foreignField ); $sql_excepted = 'ALTER TABLE `PMA_table` ADD ' . 'FOREIGN KEY (`PMA_field1`, `PMA_field2`) REFERENCES ' . '`foreignDb`.`foreignTable`(`foreignField1`, `foreignField2`);'; $this->assertEquals( $sql_excepted, $sql ); } /** * Tests for PMA_getSQLToDropForeignKey() method. * * @return void * @test */ public function testPMAGetSQLToDropForeignKey() { $table = "pma_table"; $fk = "pma_fk"; $this->assertEquals( "ALTER TABLE `pma_table` DROP FOREIGN KEY `pma_fk`;", PMA_getSQLToDropForeignKey($table, $fk) ); } /** * Tests for PMA_getHtmlForCommonForm() method. * * @return void * @test */ public function testPMAGetHtmlForCommonForm() { $db = "pma_db"; $table = "pma_table"; $columns = array( array("Field" => "Field1") ); $cfgRelation = array( 'displaywork' => true, 'relwork' => true, 'displaywork' => true, ); $tbl_storage_engine = "InnoDB"; $existrel = array(); $existrel_foreign = array(); $options_array = array(); $save_row = array(); foreach ($columns as $row) { $save_row[] = $row; } $html = PMA_getHtmlForCommonForm( $db, $table, $columns, $cfgRelation, $tbl_storage_engine, $existrel, $existrel_foreign, $options_array ); //case 1: PMA_getHtmlForInternalRelationForm $this->assertContains( PMA_getHtmlForInternalRelationForm( $columns, $tbl_storage_engine, $existrel, $db ), $html ); //case 2: PMA_getHtmlForForeignKeyForm $this->assertContains( PMA_getHtmlForForeignKeyForm( $columns, $existrel_foreign, $db, $tbl_storage_engine, $options_array ), $html ); $this->assertContains( PMA_URL_getHiddenInputs($db, $table), $html ); $this->assertContains( __('Column'), $html ); $this->assertContains( __('Internal relation'), $html ); $this->assertContains( __('Choose column to display:'), $html ); //case 3: PMA_getHtmlForInternalRelationRow $row = PMA_getHtmlForInternalRelationRow( $save_row, 0, true, $existrel, $db ); $this->assertContains( $row, $html ); //case 4: PMA_getHtmlForForeignKeyRow $row = PMA_getHtmlForForeignKeyRow( array(), true, $columns, 0, $options_array, $tbl_storage_engine, $db ); $this->assertContains( $row, $html ); //case 5: PMA_getHtmlForDisplayFieldInfos $this->assertContains( PMA_getHtmlForDisplayFieldInfos($db, $table, $save_row), $html ); //case 6: PMA_getHtmlForCommonFormFooter $this->assertContains( PMA_getHtmlForCommonFormFooter(), $html ); } /** * Tests for PMA_getHtmlForDisplayFieldInfos() method. * * @return void * @test */ public function testPMAGetHtmlForDisplayFieldInfos() { $db = "pma_db"; $table = "pma_table"; $save_row = array( array("Field" => "Field1"), array("Field" => "Field2"), ); $html = PMA_getHtmlForDisplayFieldInfos($db, $table, $save_row); $this->assertContains( __('Choose column to display:'), $html ); $this->assertContains( htmlspecialchars($save_row[0]['Field']), $html ); $this->assertContains( htmlspecialchars($save_row[1]['Field']), $html ); } /** * Tests for PMA_getQueryForDisplayUpdate() method. * * @return void * @test */ public function testPMAGetQueryForDisplayUpdate() { $disp = true; $display_field = ''; $db = "pma_db"; $table = "pma_table"; $cfgRelation = array( 'displaywork' => true, 'relwork' => true, 'displaywork' => true, 'table_info' => 'table_info', ); $GLOBALS['cfgRelation']['db'] = 'global_db'; //case 1: $disp == true && $display_field == '' $query = PMA_getQueryForDisplayUpdate( $disp, $display_field, $db, $table, $cfgRelation ); $query_expect = "DELETE FROM `global_db`.`table_info` " . "WHERE db_name = 'pma_db' AND table_name = 'pma_table'"; $this->assertEquals( $query_expect, $query ); //case 2: $disp == true && $display_field == 'display_field' $display_field == 'display_field'; $query = PMA_getQueryForDisplayUpdate( $disp, $display_field, $db, $table, $cfgRelation ); $query_expect = "DELETE FROM `global_db`.`table_info` " . "WHERE db_name = 'pma_db' AND table_name = 'pma_table'"; $this->assertEquals( $query_expect, $query ); //case 3: $disp == false && $display_field == 'display_field' $disp = false; $display_field = 'display_field'; $query = PMA_getQueryForDisplayUpdate( $disp, $display_field, $db, $table, $cfgRelation ); $query_expect = "INSERT INTO `global_db`.`table_info`" . "(db_name, table_name, display_field)" . " VALUES('pma_db','pma_table','display_field')"; $this->assertEquals( $query_expect, $query ); //case 4: $disp == false && $display_field == '' $disp = false; $display_field = ''; $query = PMA_getQueryForDisplayUpdate( $disp, $display_field, $db, $table, $cfgRelation ); $query_expect = ''; $this->assertEquals( $query_expect, $query ); } } /** * Mock class for DataBasePMAMock * * @package PhpMyAdmin-test */ Class DataBasePMAMockForTblRelation { var $databases; } /** * Mock class for DataBaseMock * * @package PhpMyAdmin-test */ Class DataBaseMockForTblRelation { /** * mock function to return table is existed * * @param string $name table name * * @return bool */ function exists($name) { return true; } } ?>