From 429fc428040a3d192dc34e8c11d11a99d61b8529 Mon Sep 17 00:00:00 2001 From: adamgsoc2013 Date: Fri, 23 Aug 2013 20:43:09 +0800 Subject: [PATCH 1/3] add UT for PMA_tbl_tracking --- test/libraries/PMA_tbl_tracking_test.php | 348 +++++++++++++++++++++++ 1 file changed, 348 insertions(+) create mode 100644 test/libraries/PMA_tbl_tracking_test.php diff --git a/test/libraries/PMA_tbl_tracking_test.php b/test/libraries/PMA_tbl_tracking_test.php new file mode 100644 index 0000000000..844ad94fdf --- /dev/null +++ b/test/libraries/PMA_tbl_tracking_test.php @@ -0,0 +1,348 @@ +getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $fetchArray = array('version' => "10"); + $dbi->expects($this->any()) + ->method('fetchArray') + ->will($this->returnValue($fetchArray)); + + $GLOBALS['dbi'] = $dbi; + } + + /** + * Tests for PMA_filterTracking() method. + * + * @return void + * @test + */ + public function testPMAFilterTracking() + { + $data = array( + array( + "date" => "20120102", + "username"=> "username1", + "statement"=>"statement1" + ), + array( + "date" => "20130102", + "username"=> "username2", + "statement"=>"statement2" + ), + ); + $filter_ts_from = 0; + $filter_ts_to = 999999999999; + $filter_users = array("username1"); + + $ret = PMA_filterTracking( + $data, $filter_ts_from, $filter_ts_to, $filter_users + ); + + $this->assertEquals( + array( + 'id' => 0, + 'timestamp' => 1325458800, + 'username' => 'username1', + 'statement' => 'statement1', + ), + $ret[0] + ); + } + + /** + * Tests for PMA_getHtmlForDataDefinitionAndManipulationStatements() method. + * + * @return void + * @test + */ + public function testPMAGetHtmlForDataDefinitionAndManipulationStatements() + { + $url_query = "url_query"; + $last_version = "10"; + $html = PMA_getHtmlForDataDefinitionAndManipulationStatements( + $url_query, $last_version + ); + + $this->assertContains( + '
', + $html + ); + + $this->assertContains( + $url_query, + $html + ); + + $this->assertContains( + PMA_URL_getHiddenInputs($GLOBALS['db'], $GLOBALS['table']), + $html + ); + + $item = sprintf( + __('Create version %1$s of %2$s'), + ($last_version + 1), + htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table']) + ); + $this->assertContains( + $item, + $html + ); + + $item = ' DELETE
'; + $this->assertContains( + $item, + $html + ); + + $this->assertContains( + __('Create version'), + $html + ); + } + + /** + * Tests for PMA_getHtmlForActivateTracking() method. + * + * @return void + * @test + */ + public function testPMAGetHtmlForActivateTracking() + { + $url_query = "url_query"; + $last_version = "10"; + $html = PMA_getHtmlForActivateTracking($url_query, $last_version); + + $this->assertContains( + '
', + $html + ); + + $this->assertContains( + $url_query, + $html + ); + + $item = sprintf( + __('Activate tracking for %s'), + htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table']) + ); + $this->assertContains( + $item, + $html + ); + + $this->assertContains( + $last_version, + $html + ); + + $this->assertContains( + __('Activate now'), + $html + ); + } + + /** + * Tests for PMA_getHtmlForDeactivateTracking() method. + * + * @return void + * @test + */ + public function testPMAGetHtmlForDeactivateTracking() + { + $url_query = "url_query"; + $last_version = "10"; + $html = PMA_getHtmlForDeactivateTracking($url_query, $last_version); + + $this->assertContains( + '
', + $html + ); + + $this->assertContains( + $url_query, + $html + ); + + $item = sprintf( + __('Deactivate tracking for %s'), + htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table']) + ); + $this->assertContains( + $item, + $html + ); + + $this->assertContains( + $last_version, + $html + ); + + $this->assertContains( + __('Deactivate now'), + $html + ); + } + + /** + * Tests for PMA_getTableLastVersionNumber() method. + * + * @return void + * @test + */ + public function testPMAGetTableLastVersionNumber() + { + $sql_result = "sql_result"; + $last_version = PMA_getTableLastVersionNumber($sql_result); + + $this->assertEquals( + "10", + $last_version + ); + } + + /** + * Tests for PMA_getHtmlForColumns() method. + * + * @return void + * @test + */ + public function testPMAGetHtmlForColumns() + { + $columns = array( + array( + 'Field'=>'Field1', + 'Type'=>'Type1', + 'Collation'=>'Collation1', + "Null"=>'YES', + 'Extra'=>'Extra1', + 'Key'=>'PRI', + 'Comment'=>'Comment1' + ), + array( + 'Field'=>'Field2', + 'Type'=>'Type2', + 'Collation'=>'Collation2', + "Null"=>'No', + 'Extra'=>'Extra2', + 'Key'=>'Key2', + 'Comment'=>'Comment2' + ), + ); + + $html = PMA_getHtmlForColumns($columns); + + $this->assertContains( + __('Column'), + $html + ); + $this->assertContains( + __('Type'), + $html + ); + $this->assertContains( + __('Collation'), + $html + ); + $this->assertContains( + __('Default'), + $html + ); + $this->assertContains( + __('Comment'), + $html + ); + + //column1 + $item1= $columns[0]; + $this->assertContains( + htmlspecialchars($item1['Field']), + $html + ); + $this->assertContains( + htmlspecialchars($item1['Type']), + $html + ); + $this->assertContains( + htmlspecialchars($item1['Collation']), + $html + ); + $this->assertContains( + 'NULL', + $html + ); + $this->assertContains( + htmlspecialchars($item1['Comment']), + $html + ); + + //column2 + $item1= $columns[1]; + $this->assertContains( + htmlspecialchars($item1['Field']), + $html + ); + $this->assertContains( + htmlspecialchars($item1['Type']), + $html + ); + $this->assertContains( + htmlspecialchars($item1['Collation']), + $html + ); + $this->assertContains( + _pgettext('None for default', 'None'), + $html + ); + $this->assertContains( + htmlspecialchars($item1['Comment']), + $html + ); + } +} + +?> \ No newline at end of file From ecec7c59649d99d805e268f890622495351bc672 Mon Sep 17 00:00:00 2001 From: adamgsoc2013 Date: Fri, 23 Aug 2013 22:58:46 +0800 Subject: [PATCH 2/3] fix the function name redefined: PMA_getHtmlForField --- libraries/tbl_tracking.lib.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/tbl_tracking.lib.php b/libraries/tbl_tracking.lib.php index 6a5cb0d0fb..edcad94de0 100644 --- a/libraries/tbl_tracking.lib.php +++ b/libraries/tbl_tracking.lib.php @@ -736,7 +736,7 @@ function PMA_getHtmlForColumns($columns) $html .= ''; $style = 'odd'; foreach ($columns as $field) { - $html .= PMA_getHtmlForColumn($field, $style); + $html .= PMA_getHtmlForField($field, $style); if ($style == 'even') { $style = 'odd'; } else { @@ -751,14 +751,14 @@ function PMA_getHtmlForColumns($columns) } /** - * Function to get html for column + * Function to get html for field * * @param array $field field * @param string $style style * * @return string */ -function PMA_getHtmlForColumn($field, $style) +function PMA_getHtmlForField($field, $style) { $html = ''; if ($field['Key'] == 'PRI') { From 8c003b6c8bace36d0a85ac6e3c88f21534ef0a61 Mon Sep 17 00:00:00 2001 From: adamgsoc2013 Date: Fri, 23 Aug 2013 23:11:15 +0800 Subject: [PATCH 3/3] remove timestamps assertion which is related with php setting --- test/libraries/PMA_tbl_tracking_test.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/test/libraries/PMA_tbl_tracking_test.php b/test/libraries/PMA_tbl_tracking_test.php index 844ad94fdf..c7ed9e3a91 100644 --- a/test/libraries/PMA_tbl_tracking_test.php +++ b/test/libraries/PMA_tbl_tracking_test.php @@ -82,13 +82,12 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase ); $this->assertEquals( - array( - 'id' => 0, - 'timestamp' => 1325458800, - 'username' => 'username1', - 'statement' => 'statement1', - ), - $ret[0] + 'username1', + $ret[0]['username'] + ); + $this->assertEquals( + 'statement1', + $ret[0]['statement'] ); }