1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-05 18:34:04 +00:00

convert test to pest

This commit is contained in:
Abrar Ahmad 2022-08-31 17:12:58 +05:00
parent a7e1a17cd0
commit cbdcec2bcd
2 changed files with 35 additions and 61 deletions

View file

@ -1,11 +1,12 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Bootstrappers;
use Illuminate\Bus\BatchRepository;
use Illuminate\Bus\DatabaseBatchRepository;
use Illuminate\Support\Facades\DB;
use ReflectionClass;
use Stancl\Tenancy\Contracts\TenancyBootstrapper;
use Stancl\Tenancy\Contracts\Tenant;
@ -32,7 +33,7 @@ class BatchTenancyBootstrapper implements TenancyBootstrapper
public function revert()
{
if ($this->previousConnection) {
// Access the resolved batch repository instance and replace its connection with the previously replaced one
// Access the resolved batch repository instance and replace its connection with the previously replaced one
$batchRepository = app(BatchRepository::class);
$batchRepository->setConnection($this->previousConnection);
$this->previousConnection = null;

View file

@ -1,13 +1,7 @@
<?php
declare(strict_types = 1);
namespace Stancl\Tenancy\Tests;
use Illuminate\Bus\BatchRepository;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Str;
use ReflectionClass;
use Stancl\Tenancy\Bootstrappers\BatchTenancyBootstrapper;
use Stancl\Tenancy\Bootstrappers\DatabaseTenancyBootstrapper;
use Stancl\Tenancy\Events\TenancyEnded;
@ -16,56 +10,35 @@ use Stancl\Tenancy\Listeners\BootstrapTenancy;
use Stancl\Tenancy\Listeners\RevertToCentralContext;
use Stancl\Tenancy\Tests\Etc\Tenant;
class BatchTest extends TestCase
beforeEach(function () {
$this->app->singleton(BatchTenancyBootstrapper::class);
config([
'tenancy.bootstrappers' => [
DatabaseTenancyBootstrapper::class,
BatchTenancyBootstrapper::class,
],
]);
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
});
test('batch repository is set to tenant connection and reverted', function () {
$tenant = Tenant::create();
expect(getBatchRepositoryConnectionName())->toBe('central');
tenancy()->initialize($tenant);
expect(getBatchRepositoryConnectionName())->toBe('tenant');
tenancy()->end();
expect(getBatchRepositoryConnectionName())->toBe('central');
})->skip(fn() => version_compare(app()->version(), '8.0', '<'), 'Job batches are only supported in Laravel 8+');
function getBatchRepositoryConnectionName()
{
public function setUp(): void
{
parent::setUp();
$this->app->singleton(BatchTenancyBootstrapper::class);
config([
'tenancy.bootstrappers' => [
DatabaseTenancyBootstrapper::class,
BatchTenancyBootstrapper::class,
],
]);
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
}
/** @test */
public function batch_repository_is_set_to_tenant_connection_and_reverted()
{
if (! version_compare(app()->version(), '8.0', '>=')) {
$this->markTestSkipped('Job batches are only supported in Laravel 8+');
}
$tenant = Tenant::create();
$this->assertEquals('central', $this->getBatchRepositoryConnectionName(), 'Expected initial connection to be central');
tenancy()->initialize($tenant);
$this->assertEquals('tenant', $this->getBatchRepositoryConnectionName(), 'Expected tenant connection to be tenant');
tenancy()->end();
$this->assertEquals('central', $this->getBatchRepositoryConnectionName(), 'Expected the reverted connection to be central');
}
private function getBatchRepositoryConnectionName(): string
{
$batchRepository = app(BatchRepository::class);
$batchRepositoryReflection = new ReflectionClass($batchRepository);
$connectionProperty = $batchRepositoryReflection->getProperty('connection');
$connectionProperty->setAccessible(true);
$connection = $connectionProperty->getValue($batchRepository);
return $connection->getName();
}
return app(BatchRepository::class)->getConnection()->getName();
}