[$bootstrapper], 'cache.default' => $cacheDriver, ]); expect(cache('foo'))->toBe(null); GlobalCache::put(['foo' => 'bar'], 1); expect(GlobalCache::get('foo'))->toBe('bar'); $tenant1 = Tenant::create(); tenancy()->initialize($tenant1); expect(GlobalCache::get('foo'))->toBe('bar'); GlobalCache::put(['abc' => 'xyz'], 1); cache(['def' => 'ghi'], 10); expect(cache('def'))->toBe('ghi'); tenancy()->end(); expect(GlobalCache::get('abc'))->toBe('xyz'); expect(GlobalCache::get('foo'))->toBe('bar'); expect(cache('def'))->toBe(null); $tenant2 = Tenant::create(); tenancy()->initialize($tenant2); expect(GlobalCache::get('abc'))->toBe('xyz'); expect(GlobalCache::get('foo'))->toBe('bar'); expect(cache('def'))->toBe(null); cache(['def' => 'xxx'], 1); expect(cache('def'))->toBe('xxx'); tenancy()->initialize($tenant1); expect(cache('def'))->toBe('ghi'); })->with([ 'tagging' => CacheTagsBootstrapper::class, 'prefixing' => PrefixCacheTenancyBootstrapper::class, ]); test('the global_cache helper supports the same syntax as the cache helper', function (string $bootstrapper) { $cacheDriver = 'redis'; if ($bootstrapper === PrefixCacheTenancyBootstrapper::class) { CacheManager::$addTags = false; PrefixCacheTenancyBootstrapper::$tenantCacheStores = [$cacheDriver]; } else { CacheManager::$addTags = true; } config([ 'tenancy.bootstrappers' => [$bootstrapper], 'cache.default' => $cacheDriver, ]); $tenant = Tenant::create(); $tenant->enter(); expect(cache('foo'))->toBe(null); // tenant cache is empty global_cache(['foo' => 'bar']); expect(global_cache('foo'))->toBe('bar'); global_cache()->set('foo', 'baz'); expect(global_cache()->get('foo'))->toBe('baz'); expect(cache('foo'))->toBe(null); // tenant cache is not affected })->with([ 'tagging' => CacheTagsBootstrapper::class, 'prefixing' => PrefixCacheTenancyBootstrapper::class, ]);