phpmyadmin/test/classes/RelationCleanupTest.php
Maurício Meneghini Fauth 2d58411bee Some coding style fixes
Signed-off-by: Maurício Meneghini Fauth <mauriciofauth@gmail.com>
2018-06-18 21:30:06 -03:00

296 lines
8.4 KiB
PHP

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* tests for PhpMyAdmin\RelationCleanup
*
* @package PhpMyAdmin-test
*/
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\Relation;
use PhpMyAdmin\RelationCleanup;
use PhpMyAdmin\Tests\RelationCleanupDbiMock;
use PHPUnit\Framework\TestCase;
/**
* PhpMyAdmin\Tests\RelationCleanupTest class
*
* this class is for testing PhpMyAdmin\RelationCleanup methods
*
* @package PhpMyAdmin-test
*/
class RelationCleanupTest extends TestCase
{
/**
* @var Relation
*/
private $relation;
/**
* Prepares environment for the test.
*
* @return void
*/
protected function setUp()
{
$_SESSION['relation'] = [];
$GLOBALS['server'] = 1;
$GLOBALS['cfg']['Server']['user'] = "user";
$GLOBALS['cfg']['Server']['pmadb'] = "pmadb";
$GLOBALS['cfg']['Server']['bookmarktable'] = 'bookmark';
$GLOBALS['cfg']['Server']['relation'] = 'relation';
$GLOBALS['cfg']['Server']['table_info'] = 'table_info';
$GLOBALS['cfg']['Server']['table_coords'] = 'table_coords';
$GLOBALS['cfg']['Server']['column_info'] = 'column_info';
$GLOBALS['cfg']['Server']['pdf_pages'] = 'pdf_pages';
$GLOBALS['cfg']['Server']['history'] = 'history';
$GLOBALS['cfg']['Server']['recent'] = 'recent';
$GLOBALS['cfg']['Server']['favorite'] = 'favorite';
$GLOBALS['cfg']['Server']['table_uiprefs'] = 'table_uiprefs';
$GLOBALS['cfg']['Server']['tracking'] = 'tracking';
$GLOBALS['cfg']['Server']['userconfig'] = 'userconfig';
$GLOBALS['cfg']['Server']['users'] = 'users';
$GLOBALS['cfg']['Server']['usergroups'] = 'usergroups';
$GLOBALS['cfg']['Server']['navigationhiding'] = 'navigationhiding';
$GLOBALS['cfg']['Server']['savedsearches'] = 'savedsearches';
$GLOBALS['cfg']['Server']['central_columns'] = 'central_columns';
$GLOBALS['cfg']['Server']['designer_settings'] = 'designer_settings';
$GLOBALS['cfg']['Server']['export_templates'] = 'pma__export_templates';
$this->redefineRelation();
$this->relation = new Relation();
}
/**
* functions for redefine RelationCleanupDbiMock
*
* @return void
*/
public function redefineRelation()
{
$GLOBALS['dbi'] = new RelationCleanupDbiMock();
unset($_SESSION['relation'][$GLOBALS['server']]);
}
/**
* Test for RelationCleanup::column
*
* @return void
* @group medium
*/
public function testPMARelationsCleanupColumn()
{
$db = "PMA";
$table = "PMA_bookmark";
$column = "name";
$this->redefineRelation();
//the $cfgRelation value before cleanup column
$cfgRelation = $this->relation->checkRelationsParam();
$this->assertEquals(
true,
$cfgRelation['commwork']
);
//validate Relation::getDbComments when commwork = true
$db_comments = $this->relation->getDbComments();
$this->assertEquals(
['db_name0' => 'comment0','db_name1' => 'comment1'],
$db_comments
);
$this->assertEquals(
true,
$cfgRelation['displaywork']
);
//validate Relation::getDisplayField when displaywork = true
$display_field = $this->relation->getDisplayField($db, $table);
$this->assertEquals(
'PMA_display_field',
$display_field
);
$this->assertEquals(
true,
$cfgRelation['relwork']
);
$this->assertEquals(
'column_info',
$cfgRelation['column_info']
);
$this->assertEquals(
'table_info',
$cfgRelation['table_info']
);
$this->assertEquals(
'relation',
$cfgRelation['relation']
);
//cleanup
RelationCleanup::column($db, $table, $column);
//the $cfgRelation value after cleanup column
$cfgRelation = $this->relation->checkRelationsParam();
$is_defined_column_info
= isset($cfgRelation['column_info']) ? $cfgRelation['column_info'] : null;
$is_defined_table_info
= isset($cfgRelation['table_info']) ? $cfgRelation['table_info'] : null;
$is_defined_relation
= isset($cfgRelation['relation']) ? $cfgRelation['relation'] : null;
$this->assertEquals(
null,
$is_defined_column_info
);
$this->assertEquals(
null,
$is_defined_table_info
);
$this->assertEquals(
null,
$is_defined_relation
);
}
/**
* Test for RelationCleanup::table
*
* @return void
*/
public function testPMARelationsCleanupTable()
{
$db = "PMA";
$table = "PMA_bookmark";
$this->redefineRelation();
//the $cfgRelation value before cleanup column
$cfgRelation = $this->relation->checkRelationsParam();
$this->assertEquals(
'column_info',
$cfgRelation['column_info']
);
$this->assertEquals(
'table_info',
$cfgRelation['table_info']
);
$this->assertEquals(
'table_coords',
$cfgRelation['table_coords']
);
$this->assertEquals(
'relation',
$cfgRelation['relation']
);
//RelationCleanup::table
RelationCleanup::table($db, $table);
//the $cfgRelation value after cleanup column
$cfgRelation = $this->relation->checkRelationsParam();
$is_defined_column_info
= isset($cfgRelation['column_info']) ? $cfgRelation['column_info'] : null;
$is_defined_table_info
= isset($cfgRelation['table_info']) ? $cfgRelation['table_info'] : null;
$is_defined_relation
= isset($cfgRelation['relation']) ? $cfgRelation['relation'] : null;
$is_defined_table_coords
= isset($cfgRelation['table_coords'])
? $cfgRelation['table_coords']
: null;
$this->assertEquals(
null,
$is_defined_column_info
);
$this->assertEquals(
null,
$is_defined_table_info
);
$this->assertEquals(
null,
$is_defined_relation
);
$this->assertEquals(
null,
$is_defined_table_coords
);
}
/**
* Test for RelationCleanup::database
*
* @return void
*/
public function testPMARelationsCleanupDatabase()
{
$db = "PMA";
$this->redefineRelation();
//the $cfgRelation value before cleanup column
$cfgRelation = $this->relation->checkRelationsParam();
$this->assertEquals(
'column_info',
$cfgRelation['column_info']
);
$this->assertEquals(
'bookmark',
$cfgRelation['bookmark']
);
$this->assertEquals(
'table_info',
$cfgRelation['table_info']
);
$this->assertEquals(
'pdf_pages',
$cfgRelation['pdf_pages']
);
$this->assertEquals(
'table_coords',
$cfgRelation['table_coords']
);
$this->assertEquals(
'relation',
$cfgRelation['relation']
);
//cleanup
RelationCleanup::database($db);
//the value after cleanup column
$cfgRelation = $this->relation->checkRelationsParam();
$is_defined_column_info
= isset($cfgRelation['column_info']) ? $cfgRelation['column_info'] : null;
$is_defined_table_info
= isset($cfgRelation['table_info']) ? $cfgRelation['table_info'] : null;
$is_defined_relation
= isset($cfgRelation['relation']) ? $cfgRelation['relation'] : null;
$is_defined_table_coords
= isset($cfgRelation['table_coords'])
? $cfgRelation['table_coords']
: null;
$this->assertEquals(
null,
$is_defined_column_info
);
$this->assertEquals(
null,
$is_defined_table_info
);
$this->assertEquals(
null,
$is_defined_relation
);
$this->assertEquals(
null,
$is_defined_table_coords
);
}
}