/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
tests/Database/DatabaseSchemaBuilderIntegrationTest.php
160 строк
5 KB
Lucas Michot
Remove useless parent::setUp()/tearDown() calls in tests extending PHPUnit's TestCase directly (#60994)
03 авг 2026, 20:54
Не верифицирован
03 авг 2026, 20:54
14a6983
Код
Авторство
О чём код?
<?php namespace Illuminate\Tests\Database; use Illuminate\Container\Container; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Builder; use Illuminate\Support\Facades\Facade; use PHPUnit\Framework\TestCase; class DatabaseSchemaBuilderIntegrationTest extends TestCase { protected $db; /** * Bootstrap database. * * @return void */ protected function setUp(): void { $this->db = $db = new DB; $db->addConnection([ 'driver' => 'sqlite', 'database' => ':memory:', ]); $db->setAsGlobal(); $container = new Container; $container->instance('db', $db->getDatabaseManager()); Facade::setFacadeApplication($container); } protected function tearDown(): void { Facade::clearResolvedInstances(); Facade::setFacadeApplication(null); } public function testHasColumnWithTablePrefix() { $this->db::connection()->setTablePrefix('test_'); $this->db::connection()->getSchemaBuilder()->create('table1', function (Blueprint $table) { $table->integer('id'); $table->string('name'); }); $this->assertTrue($this->db::connection()->getSchemaBuilder()->hasColumn('table1', 'name')); } public function testHasColumnAndIndexWithPrefixIndexDisabled() { $this->db->addConnection([ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => 'example_', 'prefix_indexes' => false, ]); $this->schemaBuilder()->create('table1', function (Blueprint $table) { $table->integer('id'); $table->string('name')->index(); }); $this->assertTrue($this->schemaBuilder()->hasIndex('table1', 'table1_name_index')); } public function testHasColumnAndIndexWithPrefixIndexEnabled() { $this->db->addConnection([ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => 'example_', 'prefix_indexes' => true, ]); $this->schemaBuilder()->create('table1', function (Blueprint $table) { $table->integer('id'); $table->string('name')->index(); }); $this->assertTrue($this->schemaBuilder()->hasIndex('table1', 'example_table1_name_index')); } public function testHasForeignKeyWithSQLiteForeignKeys() { $this->schemaBuilder()->create('users', function (Blueprint $table) { $table->id(); }); $this->schemaBuilder()->create('posts', function (Blueprint $table) { $table->id(); $table->foreignId('user_id'); $table->foreign('user_id', 'posts_user_id_foreign')->references('id')->on('users'); }); $this->assertTrue($this->schemaBuilder()->hasForeignKey('posts', ['user_id'])); $this->assertFalse($this->schemaBuilder()->hasForeignKey('posts', ['missing_id'])); } public function testHasForeignKeyCanMatchForeignKeyNamesAndColumns() { $builder = new ForeignKeySchemaBuilderStub([ [ 'name' => 'posts_user_id_foreign', 'columns' => ['user_id'], ], ]); $this->assertTrue($builder->hasForeignKey('posts', 'posts_user_id_foreign')); $this->assertTrue($builder->hasForeignKey('posts', ['user_id'])); $this->assertFalse($builder->hasForeignKey('posts', 'posts_missing_foreign')); $this->assertFalse($builder->hasForeignKey('posts', ['missing_id'])); } public function testDropColumnWithTablePrefix() { $this->db::connection()->setTablePrefix('test_'); $this->schemaBuilder()->create('pandemic_table', function (Blueprint $table) { $table->integer('id'); $table->string('stay_home'); $table->string('covid19'); $table->string('wear_mask'); }); // drop single columns $this->assertTrue($this->schemaBuilder()->hasColumn('pandemic_table', 'stay_home')); $this->schemaBuilder()->dropColumns('pandemic_table', 'stay_home'); $this->assertFalse($this->schemaBuilder()->hasColumn('pandemic_table', 'stay_home')); // drop multiple columns $this->assertTrue($this->schemaBuilder()->hasColumn('pandemic_table', 'covid19')); $this->schemaBuilder()->dropColumns('pandemic_table', ['covid19', 'wear_mask']); $this->assertFalse($this->schemaBuilder()->hasColumn('pandemic_table', 'wear_mask')); $this->assertFalse($this->schemaBuilder()->hasColumn('pandemic_table', 'covid19')); } private function schemaBuilder() { return $this->db::connection()->getSchemaBuilder(); } } class ForeignKeySchemaBuilderStub extends Builder { public function __construct(protected array $foreignKeys) { // } public function getForeignKeys($table) { return $this->foreignKeys; } }