DBStructure enhancements (#5437)

* Adding DBStructure enhancements

- Added DBStructure::rename()
- Added DBStructure::existTable()
- Added DBStructure::existColumn()

(cherry picked from commit 4ae06ec)

* Adding `pre_update_1279` method

- Added DBStructure::rename()
- Added DBStructure::existTable()
- Added DBStructure::existColumn()

(cherry picked from commit 8496d84)

* code standards

(cherry picked from commit 551d09b)

* simplify to `empty` instead `is_null`

(cherry picked from commit ce68835)
This commit is contained in:
Philipp 2018-07-21 14:43:43 +02:00 committed by Hypolite Petovan
parent 303aef34f0
commit c5cbf565d9
5 changed files with 249 additions and 1 deletions

View file

@ -2,6 +2,7 @@
namespace Friendica\Test\src\Core\Lock;
use Friendica\BaseObject;
use Friendica\Core\Config;
use Friendica\Test\DatabaseTest;
@ -20,7 +21,7 @@ abstract class LockTest extends DatabaseTest
$this->instance = $this->getInstance();
// Reusable App object
$this->app = \Friendica\BaseObject::getApp();
$this->app = BaseObject::getApp();
// Default config
Config::set('config', 'hostname', 'localhost');

View file

@ -0,0 +1,40 @@
<?php
namespace Friendica\Test\Database;
use Friendica\BaseObject;
use Friendica\Core\Config;
use Friendica\Database\DBA;
use Friendica\Test\DatabaseTest;
class DBATest extends DatabaseTest
{
public function setUp()
{
parent::setUp();
// Reusable App object
$this->app = BaseObject::getApp();
// Default config
Config::set('config', 'hostname', 'localhost');
Config::set('system', 'throttle_limit_day', 100);
Config::set('system', 'throttle_limit_week', 100);
Config::set('system', 'throttle_limit_month', 100);
Config::set('system', 'theme', 'system_theme');
}
/**
* @small
*/
public function testExists() {
$this->assertTrue(DBA::exists('config', []));
$this->assertFalse(DBA::exists('notable', []));
$this->assertTrue(DBA::exists('config', null));
$this->assertFalse(DBA::exists('notable', null));
$this->assertTrue(DBA::exists('config', ['k' => 'hostname']));
$this->assertFalse(DBA::exists('config', ['k' => 'nonsense']));
}
}

View file

@ -0,0 +1,68 @@
<?php
namespace Friendica\Test\Database;
use Friendica\BaseObject;
use Friendica\Core\Config;
use Friendica\Database\DBStructure;
use Friendica\Test\DatabaseTest;
class DBStructureTest extends DatabaseTest
{
public function setUp()
{
parent::setUp();
// Reusable App object
$this->app = BaseObject::getApp();
// Default config
Config::set('config', 'hostname', 'localhost');
Config::set('system', 'throttle_limit_day', 100);
Config::set('system', 'throttle_limit_week', 100);
Config::set('system', 'throttle_limit_month', 100);
Config::set('system', 'theme', 'system_theme');
}
/**
* @small
*/
public function testExists() {
$this->assertTrue(DBStructure::existsTable('config'));
$this->assertFalse(DBStructure::existsTable('notatable'));
$this->assertTrue(DBStructure::existsColumn('config', ['k']));
$this->assertFalse(DBStructure::existsColumn('config', ['nonsense']));
$this->assertFalse(DBStructure::existsColumn('config', ['k', 'nonsense']));
}
/**
* @small
*/
public function testRename() {
$fromColumn = 'k';
$toColumn = 'key';
$fromType = 'varbinary(255) not null';
$toType = 'varbinary(255) not null comment \'Test To Type\'';
$this->assertTrue(DBStructure::rename('config', [ $fromColumn => [ $toColumn, $toType ]]));
$this->assertTrue(DBStructure::existsColumn('config', [ $toColumn ]));
$this->assertFalse(DBStructure::existsColumn('config', [ $fromColumn ]));
$this->assertTrue(DBStructure::rename('config', [ $toColumn => [ $fromColumn, $fromType ]]));
$this->assertTrue(DBStructure::existsColumn('config', [ $fromColumn ]));
$this->assertFalse(DBStructure::existsColumn('config', [ $toColumn ]));
}
/**
* @small
*/
public function testChangePrimaryKey() {
$oldID = 'client_id';
$newID = 'pw';
$this->assertTrue(DBStructure::rename('clients', [ $newID ], DBStructure::RENAME_PRIMARY_KEY));
$this->assertTrue(DBStructure::rename('clients', [ $oldID ], DBStructure::RENAME_PRIMARY_KEY));
}
}