mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 18:44:03 +00:00
Improve specific cache store in a service test
This commit is contained in:
parent
d945d1facc
commit
1104aba4ef
1 changed files with 17 additions and 12 deletions
|
|
@ -8,7 +8,7 @@ use Stancl\Tenancy\Events\TenancyEnded;
|
||||||
use Stancl\Tenancy\Tests\Etc\CacheService;
|
use Stancl\Tenancy\Tests\Etc\CacheService;
|
||||||
use Stancl\Tenancy\Events\TenancyInitialized;
|
use Stancl\Tenancy\Events\TenancyInitialized;
|
||||||
use Stancl\Tenancy\Listeners\BootstrapTenancy;
|
use Stancl\Tenancy\Listeners\BootstrapTenancy;
|
||||||
use Stancl\Tenancy\Tests\Etc\CacheManagerService;
|
use Stancl\Tenancy\Tests\Etc\SpecificCacheStoreService;
|
||||||
use Stancl\Tenancy\Listeners\RevertToCentralContext;
|
use Stancl\Tenancy\Listeners\RevertToCentralContext;
|
||||||
use Stancl\Tenancy\CacheManager as TenancyCacheManager;
|
use Stancl\Tenancy\CacheManager as TenancyCacheManager;
|
||||||
use Stancl\Tenancy\Bootstrappers\PrefixCacheTenancyBootstrapper;
|
use Stancl\Tenancy\Bootstrappers\PrefixCacheTenancyBootstrapper;
|
||||||
|
|
@ -178,31 +178,36 @@ test('cache is prefixed correctly when using a repository injected in a singleto
|
||||||
expect(cache('key'))->toBe('central-value');
|
expect(cache('key'))->toBe('central-value');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('stores other than the default one are not prefixed', function () {
|
test('specific central cache store can be used inside a service', function () {
|
||||||
config(['cache.default' => 'redis']);
|
config(['cache.default' => 'redis']);
|
||||||
config(['cache.stores.redis2' => config('cache.stores.redis')]);
|
config(['cache.stores.redis2' => config('cache.stores.redis')]);
|
||||||
|
$cacheStore = 'redis2'; // Non-default, central cache store name that we'll use using cache()->store($cacheStore)
|
||||||
|
|
||||||
$this->app->singleton(CacheManagerService::class);
|
// Service uses the 'redis2' store which is central/not prefixed (not present in PrefixCacheTenancyBootstrapper::$tenantCacheStores)
|
||||||
|
$this->app->singleton(SpecificCacheStoreService::class, function() use ($cacheStore) {
|
||||||
|
return new SpecificCacheStoreService($this->app->make(CacheManager::class), $cacheStore);
|
||||||
|
});
|
||||||
|
|
||||||
app()->make(CacheManagerService::class)->handle();
|
app()->make(SpecificCacheStoreService::class)->handle();
|
||||||
expect(cache()->driver('redis2')->get('key'))->toBe('central-value');
|
expect(cache()->store($cacheStore)->get('key'))->toBe('central-value');
|
||||||
|
|
||||||
$tenant1 = Tenant::create();
|
$tenant1 = Tenant::create();
|
||||||
$tenant2 = Tenant::create();
|
$tenant2 = Tenant::create();
|
||||||
tenancy()->initialize($tenant1);
|
tenancy()->initialize($tenant1);
|
||||||
|
|
||||||
expect(cache()->driver('redis2')->get('key'))->toBe('central-value');
|
// The store isn't prefixed, so the cache isn't separated
|
||||||
app()->make(CacheManagerService::class)->handle();
|
expect(cache()->store($cacheStore)->get('key'))->toBe('central-value');
|
||||||
expect(cache()->driver('redis2')->get('key'))->toBe($tenant1->getTenantKey());
|
app()->make(SpecificCacheStoreService::class)->handle();
|
||||||
|
expect(cache()->store($cacheStore)->get('key'))->toBe($tenant1->getTenantKey());
|
||||||
|
|
||||||
tenancy()->initialize($tenant2);
|
tenancy()->initialize($tenant2);
|
||||||
|
|
||||||
expect(cache()->driver('redis2')->get('key'))->toBe($tenant1->getTenantKey());
|
expect(cache()->store($cacheStore)->get('key'))->toBe($tenant1->getTenantKey());
|
||||||
app()->make(CacheManagerService::class)->handle();
|
app()->make(SpecificCacheStoreService::class)->handle();
|
||||||
expect(cache()->driver('redis2')->get('key'))->toBe($tenant2->getTenantKey());
|
expect(cache()->store($cacheStore)->get('key'))->toBe($tenant2->getTenantKey());
|
||||||
|
|
||||||
tenancy()->end();
|
tenancy()->end();
|
||||||
expect(cache()->driver('redis2')->get('key'))->toBe($tenant2->getTenantKey());
|
expect(cache()->store($cacheStore)->get('key'))->toBe($tenant2->getTenantKey());
|
||||||
});
|
});
|
||||||
|
|
||||||
test('stores specified in tenantCacheStores get prefixed', function() {
|
test('stores specified in tenantCacheStores get prefixed', function() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue