From 50a77ee826444d81a218276200e3504c08d26fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Mon, 16 Sep 2019 17:36:32 +0200 Subject: [PATCH] Fix some tests --- composer.json | 5 +- ...{GlobalCache.php => GlobalCacheFacade.php} | 2 +- .../{Tenancy.php => TenancyFacade.php} | 2 +- src/Facades/TenantFacade.php | 16 +++++ src/Tenant.php | 9 ++- src/helpers.php | 2 + tests/DataSeparationTest.php | 25 ++++---- tests/FacadeTest.php | 13 +---- tests/TenantStorageTest.php | 58 +++++++++---------- tests/TestCase.php | 5 +- 10 files changed, 76 insertions(+), 61 deletions(-) rename src/Facades/{GlobalCache.php => GlobalCacheFacade.php} (83%) rename src/Facades/{Tenancy.php => TenancyFacade.php} (87%) create mode 100644 src/Facades/TenantFacade.php diff --git a/composer.json b/composer.json index f3cae583..cd31d282 100644 --- a/composer.json +++ b/composer.json @@ -40,8 +40,9 @@ "Stancl\\Tenancy\\TenancyServiceProvider" ], "aliases": { - "Tenancy": "Stancl\\Tenancy\\Facades\\Tenancy", - "GlobalCache": "Stancl\\Tenancy\\Facades\\GlobalCache" + "Tenant": "Stancl\\Tenancy\\Facades\\TenantFacade", + "Tenancy": "Stancl\\Tenancy\\Facades\\TenancyFacade", + "GlobalCache": "Stancl\\Tenancy\\Facades\\GlobalCacheFacade" } } }, diff --git a/src/Facades/GlobalCache.php b/src/Facades/GlobalCacheFacade.php similarity index 83% rename from src/Facades/GlobalCache.php rename to src/Facades/GlobalCacheFacade.php index 6c3b8dde..b96200d3 100644 --- a/src/Facades/GlobalCache.php +++ b/src/Facades/GlobalCacheFacade.php @@ -6,7 +6,7 @@ namespace Stancl\Tenancy\Facades; use Illuminate\Support\Facades\Facade; -class GlobalCache extends Facade +class GlobalCacheFacade extends Facade { protected static function getFacadeAccessor() { diff --git a/src/Facades/Tenancy.php b/src/Facades/TenancyFacade.php similarity index 87% rename from src/Facades/Tenancy.php rename to src/Facades/TenancyFacade.php index 58fef2ac..b3f7f6d9 100644 --- a/src/Facades/Tenancy.php +++ b/src/Facades/TenancyFacade.php @@ -7,7 +7,7 @@ namespace Stancl\Tenancy\Facades; use Illuminate\Support\Facades\Facade; use Stancl\Tenancy\TenantManager; -class Tenancy extends Facade +class TenancyFacade extends Facade { protected static function getFacadeAccessor() { diff --git a/src/Facades/TenantFacade.php b/src/Facades/TenantFacade.php new file mode 100644 index 00000000..a2a06b57 --- /dev/null +++ b/src/Facades/TenantFacade.php @@ -0,0 +1,16 @@ +withData($data)->persisted(true); } + public static function create($domains, array $data = []): self + { + return static::new()->withDomains((array) $domains)->withData($data)->save(); + } + protected function persisted($persisted = null) { if (gettype($persisted) === 'bool') { @@ -132,7 +137,7 @@ class Tenant implements ArrayAccess return $this; } - public function withData($data): self + public function withData(array $data): self { $this->data = $data; @@ -234,7 +239,7 @@ class Tenant implements ArrayAccess public function put($key, $value = null): self { - if ($this->storage->getIdKey() === $key) { + if ($key === 'id') { throw new TenantStorageException("The tenant's id can't be changed."); } diff --git a/src/helpers.php b/src/helpers.php index b763c7de..dd492855 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -22,6 +22,8 @@ if (! \function_exists('tenant')) { if (! is_null($key)) { return app(Tenant::class)->get($key); } + + return app(Tenant::class); } } diff --git a/tests/DataSeparationTest.php b/tests/DataSeparationTest.php index 64f627b4..a6240d12 100644 --- a/tests/DataSeparationTest.php +++ b/tests/DataSeparationTest.php @@ -9,6 +9,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; +use Stancl\Tenancy\Tenant; class DataSeparationTest extends TestCase { @@ -18,8 +19,8 @@ class DataSeparationTest extends TestCase /** @test */ public function databases_are_separated() { - $tenant1 = tenancy()->create('tenant1.localhost'); - $tenant2 = tenancy()->create('tenant2.localhost'); + $tenant1 = Tenant::create('tenant1.localhost'); + $tenant2 = Tenant::create('tenant2.localhost'); \Artisan::call('tenants:migrate', [ '--tenants' => [$tenant1['id'], $tenant2['id']], ]); @@ -52,7 +53,7 @@ class DataSeparationTest extends TestCase $this->assertSame('foo', User::first()->name); $this->assertSame('foo@bar.com', User::first()->email); - $tenant3 = tenancy()->create('tenant3.localhost'); + $tenant3 = Tenant::create('tenant3.localhost'); \Artisan::call('tenants:migrate', [ '--tenants' => [$tenant1['id'], $tenant3['id']], ]); @@ -72,8 +73,8 @@ class DataSeparationTest extends TestCase $this->markTestSkipped('Redis tenancy disabled.'); } - tenancy()->create('tenant1.localhost'); - tenancy()->create('tenant2.localhost'); + Tenant::create('tenant1.localhost'); + Tenant::create('tenant2.localhost'); tenancy()->init('tenant1.localhost'); Redis::set('foo', 'bar'); @@ -90,7 +91,7 @@ class DataSeparationTest extends TestCase $this->assertSame('bar', Redis::get('foo')); $this->assertSame(null, Redis::get('abc')); - tenancy()->create('tenant3.localhost'); + Tenant::create('tenant3.localhost'); tenancy()->init('tenant3.localhost'); $this->assertSame(null, Redis::get('foo')); $this->assertSame(null, Redis::get('abc')); @@ -99,8 +100,8 @@ class DataSeparationTest extends TestCase /** @test */ public function cache_is_separated() { - tenancy()->create('tenant1.localhost'); - tenancy()->create('tenant2.localhost'); + Tenant::create('tenant1.localhost'); + Tenant::create('tenant2.localhost'); tenancy()->init('tenant1.localhost'); Cache::put('foo', 'bar', 60); @@ -117,7 +118,7 @@ class DataSeparationTest extends TestCase $this->assertSame('bar', Cache::get('foo')); $this->assertSame(null, Cache::get('abc')); - tenancy()->create('tenant3.localhost'); + Tenant::create('tenant3.localhost'); tenancy()->init('tenant3.localhost'); $this->assertSame(null, Cache::get('foo')); $this->assertSame(null, Cache::get('abc')); @@ -126,8 +127,8 @@ class DataSeparationTest extends TestCase /** @test */ public function filesystem_is_separated() { - tenancy()->create('tenant1.localhost'); - tenancy()->create('tenant2.localhost'); + Tenant::create('tenant1.localhost'); + Tenant::create('tenant2.localhost'); tenancy()->init('tenant1.localhost'); Storage::disk('public')->put('foo', 'bar'); @@ -144,7 +145,7 @@ class DataSeparationTest extends TestCase $this->assertSame('bar', Storage::disk('public')->get('foo')); $this->assertFalse(Storage::disk('public')->exists('abc')); - tenancy()->create('tenant3.localhost'); + Tenant::create('tenant3.localhost'); tenancy()->init('tenant3.localhost'); $this->assertFalse(Storage::disk('public')->exists('foo')); $this->assertFalse(Storage::disk('public')->exists('abc')); diff --git a/tests/FacadeTest.php b/tests/FacadeTest.php index 796e9ce1..fb7f1200 100644 --- a/tests/FacadeTest.php +++ b/tests/FacadeTest.php @@ -4,25 +4,14 @@ declare(strict_types=1); namespace Stancl\Tenancy\Tests; -use Tenancy; use Tenant; class FacadeTest extends TestCase { - /** @test */ - public function tenant_manager_can_be_accessed_using_the_Tenancy_facade() - { - tenancy()->put('foo', 'bar'); - Tenancy::put('abc', 'xyz'); - - $this->assertSame('bar', Tenancy::get('foo')); - $this->assertSame('xyz', Tenancy::get('abc')); - } - /** @test */ public function tenant_manager_can_be_accessed_using_the_Tenant_facade() { - tenancy()->put('foo', 'bar'); + tenant()->put('foo', 'bar'); Tenant::put('abc', 'xyz'); $this->assertSame('bar', Tenant::get('foo')); diff --git a/tests/TenantStorageTest.php b/tests/TenantStorageTest.php index 6edfb8cc..70532186 100644 --- a/tests/TenantStorageTest.php +++ b/tests/TenantStorageTest.php @@ -34,7 +34,7 @@ class TenantStorageTest extends TestCase /** @test */ public function put_works_with_key_and_value_as_separate_args() { - tenancy()->put('foo', 'bar'); + tenant()->put('foo', 'bar'); $this->assertSame('bar', tenant()->get('foo')); } @@ -46,7 +46,7 @@ class TenantStorageTest extends TestCase $vals = ['bar', 'xyz']; $data = \array_combine($keys, $vals); - tenancy()->put($data); + tenant()->put($data); $this->assertSame($vals, tenant()->get($keys)); } @@ -54,7 +54,7 @@ class TenantStorageTest extends TestCase /** @test */ public function put_on_the_current_tenant_pushes_the_value_into_the_tenant_property_array() { - tenancy()->put('foo', 'bar'); + tenant()->put('foo', 'bar'); $this->assertSame('bar', tenancy()->tenant['foo']); } @@ -65,9 +65,9 @@ class TenantStorageTest extends TestCase $tenant = Tenant::new()->withDomains(['second.localhost'])->save(); $id = $tenant['id']; - tenancy()->put('foo', 'bar', $id); + tenant()->put('foo', 'bar', $id); - $this->assertSame('bar', tenancy()->get('foo', $id)); + $this->assertSame('bar', tenant()->get('foo', $id)); $this->assertNotSame('bar', tenant('foo')); } @@ -81,10 +81,10 @@ class TenantStorageTest extends TestCase $vals = ['bar', 'xyz']; $data = \array_combine($keys, $vals); - tenancy()->put($data, null, $id); + tenant()->put($data, null, $id); - $this->assertSame($vals, tenancy()->get($keys, $id)); - $this->assertNotSame($vals, tenancy()->get($keys)); + $this->assertSame($vals, tenant()->get($keys, $id)); + $this->assertNotSame($vals, tenant()->get($keys)); $this->assertFalse(\array_intersect($data, tenant()->tenant) == $data); // assert array not subset } @@ -116,7 +116,7 @@ class TenantStorageTest extends TestCase { $value = ['foo' => 'bar', 'abc' => 'xyz']; - $this->assertSame($value, tenancy()->put($value)); + $this->assertSame($value, tenant()->put($value)); } /** @test */ @@ -132,21 +132,21 @@ class TenantStorageTest extends TestCase /** @test */ public function data_is_stored_with_correct_data_types() { - tenancy()->put('someBool', false); - $this->assertSame('boolean', \gettype(tenancy()->get('someBool'))); - $this->assertSame('boolean', \gettype(tenancy()->get(['someBool'])[0])); + tenant()->put('someBool', false); + $this->assertSame('boolean', \gettype(tenant()->get('someBool'))); + $this->assertSame('boolean', \gettype(tenant()->get(['someBool'])[0])); - tenancy()->put('someInt', 5); - $this->assertSame('integer', \gettype(tenancy()->get('someInt'))); - $this->assertSame('integer', \gettype(tenancy()->get(['someInt'])[0])); + tenant()->put('someInt', 5); + $this->assertSame('integer', \gettype(tenant()->get('someInt'))); + $this->assertSame('integer', \gettype(tenant()->get(['someInt'])[0])); - tenancy()->put('someDouble', 11.40); - $this->assertSame('double', \gettype(tenancy()->get('someDouble'))); - $this->assertSame('double', \gettype(tenancy()->get(['someDouble'])[0])); + tenant()->put('someDouble', 11.40); + $this->assertSame('double', \gettype(tenant()->get('someDouble'))); + $this->assertSame('double', \gettype(tenant()->get(['someDouble'])[0])); - tenancy()->put('string', 'foo'); - $this->assertSame('string', \gettype(tenancy()->get('string'))); - $this->assertSame('string', \gettype(tenancy()->get(['string'])[0])); + tenant()->put('string', 'foo'); + $this->assertSame('string', \gettype(tenant()->get('string'))); + $this->assertSame('string', \gettype(tenant()->get(['string'])[0])); } /** @test */ @@ -162,14 +162,14 @@ class TenantStorageTest extends TestCase Tenant::new()->withDomains(['foo.localhost'])->save(); tenancy()->init('foo.localhost'); - tenancy()->put('foo', 'bar'); - $this->assertSame('bar', tenancy()->get('foo')); - $this->assertSame(['bar'], tenancy()->get(['foo'])); + tenant()->put('foo', 'bar'); + $this->assertSame('bar', tenant()->get('foo')); + $this->assertSame(['bar'], tenant()->get(['foo'])); tenancy()->endTenancy(); tenancy()->init('foo.localhost'); - $this->assertSame('bar', tenancy()->get('foo')); - $this->assertSame(['bar'], tenancy()->get(['foo'])); + $this->assertSame('bar', tenant()->get('foo')); + $this->assertSame(['bar'], tenant()->get(['foo'])); } /** @test */ @@ -191,11 +191,11 @@ class TenantStorageTest extends TestCase 'foo', ]]); - tenancy()->create('foo.localhost'); + tenant()->create(['foo.localhost']); tenancy()->init('foo.localhost'); - tenancy()->put(['foo' => 'bar', 'abc' => 'xyz']); - $this->assertSame(['bar', 'xyz'], tenancy()->get(['foo', 'abc'])); + tenant()->put(['foo' => 'bar', 'abc' => 'xyz']); + $this->assertSame(['bar', 'xyz'], tenant()->get(['foo', 'abc'])); $this->assertSame('bar', \DB::connection('central')->table('tenants')->where('id', tenant('id'))->first()->foo); } diff --git a/tests/TestCase.php b/tests/TestCase.php index ff3c61d5..bca4707a 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -126,8 +126,9 @@ abstract class TestCase extends \Orchestra\Testbench\TestCase protected function getPackageAliases($app) { return [ - 'Tenancy' => \Stancl\Tenancy\Facades\Tenancy::class, - 'GlobalCache' => \Stancl\Tenancy\Facades\GlobalCache::class, + 'Tenant' => \Stancl\Tenancy\Facades\TenantFacade::class, + 'Tenancy' => \Stancl\Tenancy\Facades\TenancyFacade::class, + 'GlobalCache' => \Stancl\Tenancy\Facades\GlobalCacheFacade::class, ]; }