Viewing file: PMA_tbl_relation_test.php (11.38 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Tests for libraries/tbl_relation.lib.php * * @package PhpMyAdmin-test */
/* * Include to test. */ require_once 'libraries/tbl_relation.lib.php'; require_once 'libraries/Util.class.php'; require_once 'libraries/url_generating.lib.php'; require_once 'libraries/database_interface.inc.php'; require_once 'libraries/php-gettext/gettext.inc'; require_once 'libraries/relation.lib.php'; require_once 'libraries/Theme.class.php';
/** * Tests for libraries/tbl_relation.lib.php * * @package PhpMyAdmin-test */ class PMA_TblRelationTest extends PHPUnit_Framework_TestCase { /** * Configures environment * * @return void */ protected function setUp() { $GLOBALS['server'] = 0; $GLOBALS['pmaThemeImage'] = 'theme/'; $GLOBALS['cfg']['ShowHint'] = true; //$_SESSION $_SESSION['PMA_Theme'] = PMA_Theme::load('./themes/pmahomme'); $_SESSION['PMA_Theme'] = new PMA_Theme();
$GLOBALS['pma'] = new DataBasePMAMockForTblRelation(); $GLOBALS['pma']->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( '<select', PMA_generateRelationalDropdown('name') );
// test for end tag $this->assertStringEndsWith( '</select>', PMA_generateRelationalDropdown('name') );
// test for name $this->assertStringStartsWith( '<select name="name"', PMA_generateRelationalDropdown('name') );
// test for title $this->assertStringStartsWith( '<select name="name" title="title"', PMA_generateRelationalDropdown('name', array(), false, 'title') );
$values = array('value1', '<alue2', 'value3'); // test for empty option $this->assertContains( '<option value=""></option>', PMA_generateRelationalDropdown('name', $values) );
// test for options and escaping $this->assertContains( '<option value="<alue2"><alue2</option>', PMA_generateRelationalDropdown('name', $values) );
// test for selected option $this->assertContains( '<option value="value1" selected="selected">value1</option>', PMA_generateRelationalDropdown('name', $values, 'value1') );
// test for selected value not found in values array and its escaping $this->assertContains( '<option value="valu<4" selected="selected">valu<4' . '</option></select>', 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; } } ?>
|