mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 08:04:03 +00:00
Update specific attributes of pending tenants while they're being pulled (#59)
* 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 <phpcsfixer@example.com> Co-authored-by: Samuel Štancl <samuel@archte.ch>
This commit is contained in:
parent
87e02f207f
commit
6b74589d76
5 changed files with 11 additions and 12 deletions
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -140,5 +140,6 @@ $finder = Finder::create()
|
|||
return (new Config())
|
||||
->setFinder($finder)
|
||||
->setRules($rules)
|
||||
->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect())
|
||||
->setRiskyAllowed(true)
|
||||
->setUsingCache(true);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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([
|
||||
<<<SQL
|
||||
CREATE POLICY authors_rls_policy ON authors USING (
|
||||
tenant_id::text = current_setting('my.current_tenant')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue