3 namespace Friendica\Test\src\Database;
6 use Friendica\BaseObject;
7 use Friendica\Database\Database;
8 use Friendica\Database\DBStructure;
9 use Friendica\Test\DatabaseTest;
10 use Friendica\Test\Util\Database\StaticDatabase;
12 class DBStructureTest extends DatabaseTest
14 protected function setUp()
19 $dice = $dice->addRules(include __DIR__ . '/../../../static/dependencies.config.php');
20 $dice = $dice->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true]);
21 BaseObject::setDependencyInjection($dice);
27 public function testExists() {
28 $this->assertTrue(DBStructure::existsTable('config'));
30 $this->assertFalse(DBStructure::existsTable('notatable'));
32 $this->assertTrue(DBStructure::existsColumn('config', ['k']));
33 $this->assertFalse(DBStructure::existsColumn('config', ['nonsense']));
34 $this->assertFalse(DBStructure::existsColumn('config', ['k', 'nonsense']));
40 public function testRename() {
43 $fromType = 'varbinary(255) not null';
44 $toType = 'varbinary(255) not null comment \'Test To Type\'';
46 $this->assertTrue(DBStructure::rename('config', [ $fromColumn => [ $toColumn, $toType ]]));
47 $this->assertTrue(DBStructure::existsColumn('config', [ $toColumn ]));
48 $this->assertFalse(DBStructure::existsColumn('config', [ $fromColumn ]));
50 $this->assertTrue(DBStructure::rename('config', [ $toColumn => [ $fromColumn, $fromType ]]));
51 $this->assertTrue(DBStructure::existsColumn('config', [ $fromColumn ]));
52 $this->assertFalse(DBStructure::existsColumn('config', [ $toColumn ]));
58 public function testChangePrimaryKey() {
62 $this->assertTrue(DBStructure::rename('clients', [ $newID ], DBStructure::RENAME_PRIMARY_KEY));
63 $this->assertTrue(DBStructure::rename('clients', [ $oldID ], DBStructure::RENAME_PRIMARY_KEY));