diff --git a/tests/PostgresTest.php b/tests/PostgresTest.php index 06263ab7..1c582d9f 100644 --- a/tests/PostgresTest.php +++ b/tests/PostgresTest.php @@ -22,59 +22,23 @@ use Stancl\Tenancy\Bootstrappers\Integrations\PostgresSingleDatabaseBootstrapper beforeEach(function () { DB::purge('central'); - config(['tenancy.bootstrappers' => [PostgresSingleDatabaseBootstrapper::class]]); - Event::listen(TenancyInitialized::class, BootstrapTenancy::class); Event::listen(TenancyEnded::class, RevertToCentralContext::class); + config(['tenancy.bootstrappers' => [PostgresSingleDatabaseBootstrapper::class]]); config(['database.connections.central' => config('database.connections.pgsql')]); config(['tenancy.models.tenant_key_column' => 'tenant_id']); - config(['tenancy.models.tenant' => $tenantClass = Tenant::class]); + config(['tenancy.models.tenant' => Tenant::class]); config(['tenancy.models.rls' => [ - $primaryModelClass = Post::class, // Primary model (directly belongs to tenant) - $secondaryModelClass = ScopedComment::class, // Secondary model (belongs to tenant through a primary model) + Post::class, // Primary model (directly belongs to tenant) + ScopedComment::class, // Secondary model (belongs to tenant through a primary model) ]]); - $tenantModel = new $tenantClass; - $primaryModel = new $primaryModelClass; - $secondaryModel = new $secondaryModelClass; - - $tenantTable = $tenantModel->getTable(); - // Drop all existing policies - DB::transaction(function () use ($tenantTable, $primaryModel, $secondaryModel) { + DB::transaction(function () { foreach (DB::select('select * from pg_policies') as $policy) { DB::statement("DROP POLICY IF EXISTS {$policy->policyname} ON {$policy->tablename}"); } - - Schema::dropIfExists('domains'); - DB::statement("DROP TABLE IF EXISTS {$secondaryModel->getTable()} CASCADE"); - DB::statement("DROP TABLE IF EXISTS {$primaryModel->getTable()} CASCADE"); - DB::statement("DROP TABLE IF EXISTS $tenantTable CASCADE"); - - Schema::create($tenantTable, function (Blueprint $table) { - $table->string('id')->primary(); - $table->timestamps(); - $table->json('data')->nullable(); - }); - - Schema::create($primaryModel->getTable(), function (Blueprint $table) { - $table->id(); - $table->string('text'); - $table->string($tenantKeyColumn = config('tenancy.models.tenant_key_column')); - - $table->timestamps(); - $table->foreign($tenantKeyColumn)->references(tenancy()->model()->getKeyName())->on(tenancy()->model()->getTable())->onUpdate('cascade')->onDelete('cascade'); - }); - - Schema::create($secondaryModel->getTable(), function (Blueprint $table) use ($primaryModel) { - $table->id(); - $table->string('text'); - $table->unsignedBigInteger($primaryModel->getForeignKey()); - - $table->timestamps(); - $table->foreign($primaryModel->getForeignKey())->references($primaryModel->getKeyName())->on($primaryModel->getTable())->onUpdate('cascade')->onDelete('cascade'); - }); }); });