From e4ebccfa5ff0a50eff4f61a2edb2caf853b52dc9 Mon Sep 17 00:00:00 2001 From: Johannes Date: Thu, 13 Mar 2025 13:12:10 +0100 Subject: [PATCH] use deleting instead of deleted event to trigger cache invalidation --- src/Database/Concerns/InvalidatesResolverCache.php | 2 +- .../Concerns/InvalidatesTenantsResolverCache.php | 2 +- tests/CachedTenantResolverTest.php | 14 ++++++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Database/Concerns/InvalidatesResolverCache.php b/src/Database/Concerns/InvalidatesResolverCache.php index 84ff9378..ae737314 100644 --- a/src/Database/Concerns/InvalidatesResolverCache.php +++ b/src/Database/Concerns/InvalidatesResolverCache.php @@ -19,7 +19,7 @@ trait InvalidatesResolverCache public static function bootInvalidatesResolverCache() { static::saved(fn(Tenant $tenant) => static::invalidateTenantCache($tenant)); - static::deleted(fn(Tenant $tenant) => static::invalidateTenantCache($tenant)); + static::deleting(fn(Tenant $tenant) => static::invalidateTenantCache($tenant)); } private static function invalidateTenantCache(Tenant $tenant): void diff --git a/src/Database/Concerns/InvalidatesTenantsResolverCache.php b/src/Database/Concerns/InvalidatesTenantsResolverCache.php index 55e172d7..8241096b 100644 --- a/src/Database/Concerns/InvalidatesTenantsResolverCache.php +++ b/src/Database/Concerns/InvalidatesTenantsResolverCache.php @@ -22,7 +22,7 @@ trait InvalidatesTenantsResolverCache public static function bootInvalidatesTenantsResolverCache() { static::saved(fn(Model $model) => static::invalidateTenantCache($model)); - static::deleted(fn(Model $model) => static::invalidateTenantCache($model)); + static::deleting(fn(Model $model) => static::invalidateTenantCache($model)); } private static function invalidateTenantCache(Model $model): void diff --git a/tests/CachedTenantResolverTest.php b/tests/CachedTenantResolverTest.php index f2f5a0cd..a41085e0 100644 --- a/tests/CachedTenantResolverTest.php +++ b/tests/CachedTenantResolverTest.php @@ -5,6 +5,8 @@ declare(strict_types=1); namespace Stancl\Tenancy\Tests; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Exceptions; +use Stancl\Tenancy\Contracts\TenantCouldNotBeIdentifiedException; use Stancl\Tenancy\Resolvers\DomainTenantResolver; use Stancl\Tenancy\Tests\Etc\Tenant; @@ -113,6 +115,8 @@ class CachedTenantResolverTest extends TestCase /** @test */ public function cache_is_invalidated_when_a_tenants_domain_is_deleted() { + Exceptions::fake(); + $tenant = Tenant::create(); $tenant->createDomain([ 'domain' => 'acme', @@ -129,14 +133,18 @@ class CachedTenantResolverTest extends TestCase $tenant->domains()->first()->delete(); + $this->expectException(TenantCouldNotBeIdentifiedException::class); // tenant not found + DB::flushQueryLog(); $this->assertTrue($tenant->is(app(DomainTenantResolver::class)->resolve('acme'))); - $this->assertEmpty(DB::getQueryLog()); // not empty + $this->assertNotEmpty(DB::getQueryLog()); // not emptyt empty } /** @test */ public function cache_is_invalidated_when_a_tenant_is_deleted() { + Exceptions::fake(); + $tenant = Tenant::create(); $tenant->createDomain([ 'domain' => 'acme', @@ -153,8 +161,10 @@ class CachedTenantResolverTest extends TestCase $tenant->delete(); + $this->expectException(TenantCouldNotBeIdentifiedException::class); // tenant not found + DB::flushQueryLog(); $this->assertTrue($tenant->is(app(DomainTenantResolver::class)->resolve('acme'))); - $this->assertEmpty(DB::getQueryLog()); // not empty + $this->assertNotEmpty(DB::getQueryLog()); // not empty } }