From 6b74589d76d4cedfd717c956e2087257c6fe3f67 Mon Sep 17 00:00:00 2001 From: lukinovec Date: Wed, 28 Aug 2024 00:41:16 +0200 Subject: [PATCH] Update specific attributes of pending tenants while they're being pulled (#59) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add option to update attributes of pending tenants while pulling them * Fix failing toEqualCanonicalizing tests * Fix code style (php-cs-fixer) * fix code errors * lock phpcsfixer to 3.62.0 due to a bug in 3.63.1 --------- Co-authored-by: PHP CS Fixer Co-authored-by: Samuel Ć tancl --- .github/workflows/ci.yml | 2 +- .php-cs-fixer.php | 1 + src/Database/Concerns/HasPending.php | 8 ++++---- tests/CloneActionTest.php | 8 ++++---- tests/RLS/TableManagerTest.php | 4 +--- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c016fc17..40fb337c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -130,7 +130,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install php-cs-fixer - run: composer global require friendsofphp/php-cs-fixer + run: composer global require friendsofphp/php-cs-fixer:3.62.0 - name: Run php-cs-fixer run: $HOME/.composer/vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php - name: Commit changes from php-cs-fixer diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php index ffa9f6cd..15a75d64 100644 --- a/.php-cs-fixer.php +++ b/.php-cs-fixer.php @@ -140,5 +140,6 @@ $finder = Finder::create() return (new Config()) ->setFinder($finder) ->setRules($rules) + ->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect()) ->setRiskyAllowed(true) ->setUsingCache(true); diff --git a/src/Database/Concerns/HasPending.php b/src/Database/Concerns/HasPending.php index 4d72486f..83cf0cf2 100644 --- a/src/Database/Concerns/HasPending.php +++ b/src/Database/Concerns/HasPending.php @@ -73,14 +73,14 @@ trait HasPending } /** Try to pull a tenant from the pool of pending tenants. */ - public static function pullPendingFromPool(bool $firstOrCreate = false): ?Tenant + public static function pullPendingFromPool(bool $firstOrCreate = false, array $attributes = []): ?Tenant { if (! static::onlyPending()->exists()) { if (! $firstOrCreate) { return null; } - static::createPending(); + static::createPending($attributes); } // A pending tenant is surely available at this point @@ -89,9 +89,9 @@ trait HasPending event(new PullingPendingTenant($tenant)); - $tenant->update([ + $tenant->update(array_merge($attributes, [ 'pending_since' => null, - ]); + ])); event(new PendingTenantPulled($tenant)); diff --git a/tests/CloneActionTest.php b/tests/CloneActionTest.php index 2d27bdf1..3625266b 100644 --- a/tests/CloneActionTest.php +++ b/tests/CloneActionTest.php @@ -98,14 +98,14 @@ test('CloneRoutesAsTenant registers prefixed duplicates of universal routes corr // Universal flag is excluded from the route middleware expect(tenancy()->getRouteMiddleware($newRoutes->first())) ->toEqualCanonicalizing( - array_filter(array_merge(tenancy()->getRouteMiddleware($universalRoute), ['tenant']), - fn($middleware) => $middleware !== 'universal') + array_values(array_filter(array_merge(tenancy()->getRouteMiddleware($universalRoute), ['tenant']), + fn($middleware) => $middleware !== 'universal')) ); // Universal flag is provided statically in the route's controller, so we cannot exclude it expect(tenancy()->getRouteMiddleware($newRoutes->last())) ->toEqualCanonicalizing( - array_merge(tenancy()->getRouteMiddleware($universalRoute2), ['tenant']) + array_values(array_merge(tenancy()->getRouteMiddleware($universalRoute2), ['tenant'])) ); $tenant = Tenant::create(); @@ -236,7 +236,7 @@ test('routes with the clone flag get cloned without making the routes universal' $clonedRoute = RouteFacade::getRoutes()->getByName('tenant.' . $routeName); - expect($clonedRoute->middleware())->toEqualCanonicalizing(['tenant', $identificationMiddleware]); + expect(array_values($clonedRoute->middleware()))->toEqualCanonicalizing(['tenant', $identificationMiddleware]); // The original route is not accessible pest()->get(route($routeName))->assertServerError(); diff --git a/tests/RLS/TableManagerTest.php b/tests/RLS/TableManagerTest.php index ef1ebf68..84689a72 100644 --- a/tests/RLS/TableManagerTest.php +++ b/tests/RLS/TableManagerTest.php @@ -535,9 +535,7 @@ test('table rls manager generates relationship trees with tables related to the })->with([true, false]); test('table rls manager generates queries correctly', function() { - $sessionVariableName = config('tenancy.rls.session_variable_name'); - - expect(app(TableRLSManager::class)->generateQueries())->toEqualCanonicalizing([ + expect(array_values(app(TableRLSManager::class)->generateQueries()))->toEqualCanonicalizing([ <<