diff --git a/test/libraries/PMA_tbl_tracking_test.php b/test/libraries/PMA_tbl_tracking_test.php index c7ed9e3a91..ee9dc70e06 100644 --- a/test/libraries/PMA_tbl_tracking_test.php +++ b/test/libraries/PMA_tbl_tracking_test.php @@ -15,6 +15,9 @@ require_once 'libraries/database_interface.inc.php'; require_once 'libraries/php-gettext/gettext.inc'; require_once 'libraries/relation.lib.php'; require_once 'libraries/url_generating.lib.php'; +require_once 'libraries/Tracker.class.php'; +require_once 'libraries/Message.class.php'; +require_once 'libraries/js_escape.lib.php'; /** * Tests for libraries/tbl_tracking.lib.php @@ -35,24 +38,37 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase /** * SET these to avoid undefined index error */ + $_REQUEST['db'] = "db"; + $_REQUEST['table'] = "table"; + $GLOBALS['server'] = 1; $GLOBALS['db'] = "PMA_db"; $GLOBALS['table'] = "PMA_table"; $GLOBALS['cfg']['Server']['pmadb'] = 'pmadb'; $GLOBALS['cfg']['ServerDefault'] = "server"; - + $GLOBALS['cfg']['Server']['tracking'] = "tracking"; + $GLOBALS['cfg']['ActionsLinksMode'] = 'ActionsLinksMode'; + $GLOBALS['cfg']['ActionLinksMode'] = 'ActionLinksMode'; + $GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 1000; + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') ->disableOriginalConstructor() ->getMock(); - + $fetchArray = array('version' => "10"); $dbi->expects($this->any()) ->method('fetchArray') ->will($this->returnValue($fetchArray)); + $dbi->expects($this->any()) + ->method('query') + ->will($this->returnValue(true)); + $dbi->expects($this->any()) + ->method('tryQuery') + ->will($this->returnValue(true)); $GLOBALS['dbi'] = $dbi; } - + /** * Tests for PMA_filterTracking() method. * @@ -63,20 +79,20 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase { $data = array( array( - "date" => "20120102", - "username"=> "username1", + "date" => "20120102", + "username"=> "username1", "statement"=>"statement1" ), array( - "date" => "20130102", - "username"=> "username2", + "date" => "20130102", + "username"=> "username2", "statement"=>"statement2" ), ); - $filter_ts_from = 0; + $filter_ts_from = 0; $filter_ts_to = 999999999999; $filter_users = array("username1"); - + $ret = PMA_filterTracking( $data, $filter_ts_from, $filter_ts_to, $filter_users ); @@ -90,7 +106,7 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase $ret[0]['statement'] ); } - + /** * Tests for PMA_getHtmlForDataDefinitionAndManipulationStatements() method. * @@ -109,17 +125,17 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase '
', $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), @@ -129,20 +145,20 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase $item, $html ); - + $item = ' DELETE
'; $this->assertContains( $item, $html ); - + $this->assertContains( __('Create version'), $html ); } - + /** * Tests for PMA_getHtmlForActivateTracking() method. * @@ -159,12 +175,12 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase '
', $html ); - + $this->assertContains( $url_query, $html ); - + $item = sprintf( __('Activate tracking for %s'), htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table']) @@ -173,18 +189,18 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase $item, $html ); - + $this->assertContains( $last_version, $html ); - + $this->assertContains( __('Activate now'), $html ); } - + /** * Tests for PMA_getHtmlForDeactivateTracking() method. * @@ -201,12 +217,12 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase '
', $html ); - + $this->assertContains( $url_query, $html ); - + $item = sprintf( __('Deactivate tracking for %s'), htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table']) @@ -215,18 +231,18 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase $item, $html ); - + $this->assertContains( $last_version, $html ); - + $this->assertContains( __('Deactivate now'), $html ); } - + /** * Tests for PMA_getTableLastVersionNumber() method. * @@ -243,7 +259,23 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase $last_version ); } - + + /** + * Tests for PMA_getSQLResultForSelectableTables() method. + * + * @return void + * @test + */ + public function testPMAGetSQLResultForSelectableTables() + { + $ret = PMA_getSQLResultForSelectableTables(); + + $this->assertEquals( + true, + $ret + ); + } + /** * Tests for PMA_getHtmlForColumns() method. * @@ -254,27 +286,27 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase { $columns = array( array( - 'Field'=>'Field1', - 'Type'=>'Type1', - 'Collation'=>'Collation1', - "Null"=>'YES', - 'Extra'=>'Extra1', + 'Field'=>'Field1', + 'Type'=>'Type1', + 'Collation'=>'Collation1', + "Null"=>'YES', + 'Extra'=>'Extra1', 'Key'=>'PRI', - 'Comment'=>'Comment1' + 'Comment'=>'Comment1' ), array( - 'Field'=>'Field2', - 'Type'=>'Type2', - 'Collation'=>'Collation2', - "Null"=>'No', - 'Extra'=>'Extra2', + 'Field'=>'Field2', + 'Type'=>'Type2', + 'Collation'=>'Collation2', + "Null"=>'No', + 'Extra'=>'Extra2', 'Key'=>'Key2', - 'Comment'=>'Comment2' + 'Comment'=>'Comment2' ), ); - + $html = PMA_getHtmlForColumns($columns); - + $this->assertContains( __('Column'), $html @@ -295,7 +327,7 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase __('Comment'), $html ); - + //column1 $item1= $columns[0]; $this->assertContains( @@ -318,7 +350,7 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase htmlspecialchars($item1['Comment']), $html ); - + //column2 $item1= $columns[1]; $this->assertContains( @@ -342,6 +374,353 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase $html ); } + + /** + * Tests for PMA_getListOfVersionsOfTable() method. + * + * @return void + * @test + */ + public function testPMAGetListOfVersionsOfTable() + { + $ret = PMA_getListOfVersionsOfTable(); + + $this->assertEquals( + true, + $ret + ); + } + + /** + * Tests for PMA_getHtmlForTableVersionDetails() method. + * + * @return void + * @test + */ + public function testPMAGetHtmlForTableVersionDetails() + { + $sql_result = true; + $last_version = "10"; + $url_params = array(); + $url_query = "select * from PMA"; + + $dbi_old = $GLOBALS['dbi']; + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $fetchArray = array( + 'tracking_active' => 1, + 'version' => "10", + 'db_name' => 'db_name', + 'table_name' => 'table_name', + 'date_created' => 'date_created', + 'date_updated' => 'date_updated' + ); + $dbi->expects($this->at(0)) + ->method('fetchArray') + ->will($this->returnValue($fetchArray)); + $dbi->expects($this->at(1)) + ->method('fetchArray') + ->will($this->returnValue($fetchArray)); + $dbi->expects($this->at(2)) + ->method('fetchArray') + ->will($this->returnValue(false)); + + $GLOBALS['dbi'] = $dbi; + + $ret = PMA_getHtmlForTableVersionDetails( + $sql_result, $last_version, $url_params, $url_query + ); + + $this->assertContains( + __('Database'), + $ret + ); + $this->assertContains( + __('Table'), + $ret + ); + $this->assertContains( + __('Version'), + $ret + ); + $this->assertContains( + __('Created'), + $ret + ); + $this->assertContains( + __('Updated'), + $ret + ); + $this->assertContains( + __('Status'), + $ret + ); + $this->assertContains( + __('Show'), + $ret + ); + $this->assertContains( + $fetchArray['db_name'], + $ret + ); + $this->assertContains( + $fetchArray['table_name'], + $ret + ); + $this->assertContains( + $fetchArray['version'], + $ret + ); + $this->assertContains( + $fetchArray['date_created'], + $ret + ); + $this->assertContains( + $fetchArray['date_updated'], + $ret + ); + $this->assertContains( + __('Tracking report'), + $ret + ); + $this->assertContains( + __('Structure snapshot'), + $ret + ); + $html = sprintf( + __('Deactivate tracking for %s'), + htmlspecialchars($GLOBALS['db'] . '.' . $GLOBALS['table']) + ); + $this->assertContains( + $html, + $ret + ); + + //restore DBI + $GLOBALS['dbi'] = $dbi_old; + } + + /** + * Tests for PMA_getHtmlForSelectableTables() method. + * + * @return void + * @test + */ + public function testPMAGetHtmlForSelectableTables() + { + $selectable_tables_sql_result = true; + $url_query = "select * from PMA"; + + $dbi_old = $GLOBALS['dbi']; + $dbi = $this->getMockBuilder('PMA_DatabaseInterface') + ->disableOriginalConstructor() + ->getMock(); + + $fetchArray = array( + 'tracking_active' => 1, + 'version' => "10", + 'db_name' => 'db_name', + 'table_name' => 'table_name', + 'date_created' => 'date_created', + 'date_updated' => 'date_updated' + ); + $dbi->expects($this->at(0)) + ->method('fetchArray') + ->will($this->returnValue($fetchArray)); + $dbi->expects($this->at(1)) + ->method('fetchArray') + ->will($this->returnValue($fetchArray)); + $dbi->expects($this->at(2)) + ->method('fetchArray') + ->will($this->returnValue(false)); + + $GLOBALS['dbi'] = $dbi; + + $ret = PMA_getHtmlForSelectableTables( + $selectable_tables_sql_result, $url_query + ); + + $this->assertContains( + htmlspecialchars($fetchArray['table_name']), + $ret + ); + $this->assertContains( + htmlspecialchars($fetchArray['db_name']), + $ret + ); + $this->assertContains( + __('Show versions'), + $ret + ); + + //restore DBI + $GLOBALS['dbi'] = $dbi_old; + } + + /** + * Tests for PMA_getHtmlForTrackingReport() method. + * + * @return void + * @test + */ + public function testPMAGetHtmlForTrackingReportr() + { + $_REQUEST['version'] = 10; + $_REQUEST['date_from'] = "date_from"; + $_REQUEST['date_to'] = "date_to"; + $_REQUEST['users'] = "users"; + $_REQUEST['logtype'] = 'logtype'; + $url_query = "select * from PMA"; + $data = array( + 'tracking'=>'tracking', + 'ddlog' => array('ddlog'), + 'dmlog' => array('dmlog') + ); + $url_params = array(); + $selection_schema = array(); + $selection_data = array(); + $selection_both = array(); + $filter_ts_to = array(); + $filter_ts_from = array(); + $filter_users = array(); + + $html = PMA_getHtmlForTrackingReport( + $url_query, $data, $url_params, + $selection_schema, $selection_data, + $selection_both, $filter_ts_to, + $filter_ts_from, $filter_users + ); + + $this->assertContains( + __('Tracking report'), + $html + ); + + $this->assertContains( + $url_query, + $html + ); + + $this->assertContains( + __('Tracking statements'), + $html + ); + + $this->assertContains( + $data['tracking'], + $html + ); + + $version = '
'tracking', + 'dmlog' => array( + array( + 'statement' => 'statement', + 'date' => 'date', + 'username' => 'username', + ) + ), + 'ddlog' => array('ddlog') + ); + $url_params = array(); + $ddlog_count = 10; + $drop_image_or_text = "text"; + $filter_ts_to = 9999999999; + $filter_ts_from = 0; + $filter_users = array("*"); + + $html = PMA_getHtmlForDataManipulationStatements( + $data, $filter_users, + $filter_ts_from, $filter_ts_to, $url_params, + $ddlog_count, $drop_image_or_text + ); + + $this->assertContains( + __('Date'), + $html + ); + + $this->assertContains( + __('Username'), + $html + ); + + $this->assertContains( + __('Data manipulation statement'), + $html + ); + + $this->assertContains( + $data['dmlog'][0]['date'], + $html + ); + + $this->assertContains( + $data['dmlog'][0]['username'], + $html + ); + } } -?> \ No newline at end of file +?> +