1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
<?php
namespace Illuminate\Tests\Integration\Database\Sqlite;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Tests\Integration\Database\DatabaseTestCase;
use stdClass;
class DatabaseSqliteSchemaBuilderTest extends DatabaseTestCase
{
protected function getEnvironmentSetUp($app)
{
if (getenv('DB_CONNECTION') !== 'testing') {
$this->markTestSkipped('Test requires a Sqlite connection.');
}
$app['config']->set('database.default', 'conn1');
$app['config']->set('database.connections.conn1', [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
]);
}
protected function afterRefreshingDatabase()
{
Schema::create('users', function (Blueprint $table) {
$table->integer('id');
$table->string('name');
$table->string('age');
$table->enum('color', ['red', 'blue']);
});
}
protected function destroyDatabaseMigrations()
{
Schema::drop('users');
}
public function testGetAllTablesAndColumnListing()
{
$tables = Schema::getAllTables();
$this->assertCount(2, $tables);
$tableProperties = array_values((array) $tables[0]);
$this->assertEquals(['table', 'migrations'], $tableProperties);
$this->assertInstanceOf(stdClass::class, $tables[1]);
$tableProperties = array_values((array) $tables[1]);
$this->assertEquals(['table', 'users'], $tableProperties);
$columns = Schema::getColumnListing('users');
foreach (['id', 'name', 'age', 'color'] as $column) {
$this->assertContains($column, $columns);
}
Schema::create('posts', function (Blueprint $table) {
$table->integer('id');
$table->string('title');
});
$tables = Schema::getAllTables();
$this->assertCount(3, $tables);
Schema::drop('posts');
}
public function testGetAllViews()
{
DB::connection('conn1')->statement(<<<'SQL'
CREATE VIEW users_view
AS
SELECT name,age from users;
SQL);
$tableView = Schema::getAllViews();
$this->assertCount(1, $tableView);
$this->assertInstanceOf(stdClass::class, $obj = array_values($tableView)[0]);
$this->assertEquals('users_view', $obj->name);
$this->assertEquals('view', $obj->type);
DB::connection('conn1')->statement(<<<'SQL'
DROP VIEW IF EXISTS users_view;
SQL);
$this->assertEmpty(Schema::getAllViews());
}
}
|