1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-06 00:34:05 +00:00

Merge branch 'master' into 3.x

This commit is contained in:
Abrar Ahmad 2022-08-22 12:55:16 +05:00 committed by GitHub
commit 158088faae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
83 changed files with 3744 additions and 3606 deletions

View file

@ -2,45 +2,35 @@
declare(strict_types=1);
namespace Stancl\Tenancy\Tests\Features;
use Illuminate\Support\Facades\Route;
use Stancl\Tenancy\Features\CrossDomainRedirect;
use Stancl\Tenancy\Tests\Etc\Tenant;
use Stancl\Tenancy\Tests\TestCase;
class RedirectTest extends TestCase
{
/** @test */
public function tenant_redirect_macro_replaces_only_the_hostname()
{
config([
'tenancy.features' => [CrossDomainRedirect::class],
]);
test('tenant redirect macro replaces only the hostname', function () {
config([
'tenancy.features' => [CrossDomainRedirect::class],
]);
Route::get('/foobar', function () {
return 'Foo';
})->name('home');
Route::get('/foobar', function () {
return 'Foo';
})->name('home');
Route::get('/redirect', function () {
return redirect()->route('home')->domain('abcd');
});
Route::get('/redirect', function () {
return redirect()->route('home')->domain('abcd');
});
$tenant = Tenant::create();
tenancy()->initialize($tenant);
$tenant = Tenant::create();
tenancy()->initialize($tenant);
$this->get('/redirect')
->assertRedirect('http://abcd/foobar');
}
pest()->get('/redirect')
->assertRedirect('http://abcd/foobar');
});
/** @test */
public function tenant_route_helper_generates_correct_url()
{
Route::get('/abcdef/{a?}/{b?}', function () {
return 'Foo';
})->name('foo');
test('tenant route helper generates correct url', function () {
Route::get('/abcdef/{a?}/{b?}', function () {
return 'Foo';
})->name('foo');
$this->assertSame('http://foo.localhost/abcdef/as/df', tenant_route('foo.localhost', 'foo', ['a' => 'as', 'b' => 'df']));
$this->assertSame('http://foo.localhost/abcdef', tenant_route('foo.localhost', 'foo', []));
}
}
expect(tenant_route('foo.localhost', 'foo', ['a' => 'as', 'b' => 'df']))->toBe('http://foo.localhost/abcdef/as/df');
expect(tenant_route('foo.localhost', 'foo', []))->toBe('http://foo.localhost/abcdef');
});

View file

@ -2,8 +2,6 @@
declare(strict_types=1);
namespace Stancl\Tenancy\Tests\Features;
use Illuminate\Support\Facades\Event;
use Stancl\Tenancy\Events\TenancyEnded;
use Stancl\Tenancy\Events\TenancyInitialized;
@ -11,108 +9,96 @@ use Stancl\Tenancy\Features\TenantConfig;
use Stancl\Tenancy\Listeners\BootstrapTenancy;
use Stancl\Tenancy\Listeners\RevertToCentralContext;
use Stancl\Tenancy\Tests\Etc\Tenant;
use Stancl\Tenancy\Tests\TestCase;
class TenantConfigTest extends TestCase
{
public function tearDown(): void
{
TenantConfig::$storageToConfigMap = [];
afterEach(function () {
TenantConfig::$storageToConfigMap = [];
});
parent::tearDown();
}
/** @test */
test('nested_tenant_values_are_merged', function () {
expect(config('whitelabel.theme'))->toBeNull();
config([
'tenancy.features' => [TenantConfig::class],
'tenancy.bootstrappers' => [],
]);
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
/** @test */
public function nested_tenant_values_are_merged()
{
$this->assertSame(null, config('whitelabel.theme'));
config([
'tenancy.features' => [TenantConfig::class],
'tenancy.bootstrappers' => [],
]);
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
TenantConfig::$storageToConfigMap = [
'whitelabel.config.theme' => 'whitelabel.theme',
];
TenantConfig::$storageToConfigMap = [
'whitelabel.config.theme' => 'whitelabel.theme',
];
$tenant = Tenant::create([
'whitelabel' => ['config' => ['theme' => 'dark']],
]);
$tenant = Tenant::create([
'whitelabel' => ['config' => ['theme' => 'dark']],
]);
tenancy()->initialize($tenant);
expect(config('whitelabel.theme'))->toBe('dark');
tenancy()->end();
});
tenancy()->initialize($tenant);
$this->assertSame('dark', config('whitelabel.theme'));
tenancy()->end();
}
test('config is merged and removed', function () {
expect(config('services.paypal'))->toBe(null);
config([
'tenancy.features' => [TenantConfig::class],
'tenancy.bootstrappers' => [],
]);
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
/** @test */
public function config_is_merged_and_removed()
{
$this->assertSame(null, config('services.paypal'));
config([
'tenancy.features' => [TenantConfig::class],
'tenancy.bootstrappers' => [],
]);
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
TenantConfig::$storageToConfigMap = [
'paypal_api_public' => 'services.paypal.public',
'paypal_api_private' => 'services.paypal.private',
];
TenantConfig::$storageToConfigMap = [
'paypal_api_public' => 'services.paypal.public',
'paypal_api_private' => 'services.paypal.private',
];
$tenant = Tenant::create([
'paypal_api_public' => 'foo',
'paypal_api_private' => 'bar',
]);
$tenant = Tenant::create([
'paypal_api_public' => 'foo',
'paypal_api_private' => 'bar',
]);
tenancy()->initialize($tenant);
expect(config('services.paypal'))->toBe(['public' => 'foo', 'private' => 'bar']);
tenancy()->initialize($tenant);
$this->assertSame(['public' => 'foo', 'private' => 'bar'], config('services.paypal'));
tenancy()->end();
pest()->assertSame([
'public' => null,
'private' => null,
], config('services.paypal'));
});
tenancy()->end();
$this->assertSame([
'public' => null,
'private' => null,
], config('services.paypal'));
}
test('the value can be set to multiple config keys', function () {
expect(config('services.paypal'))->toBe(null);
config([
'tenancy.features' => [TenantConfig::class],
'tenancy.bootstrappers' => [],
]);
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
/** @test */
public function the_value_can_be_set_to_multiple_config_keys()
{
$this->assertSame(null, config('services.paypal'));
config([
'tenancy.features' => [TenantConfig::class],
'tenancy.bootstrappers' => [],
]);
Event::listen(TenancyInitialized::class, BootstrapTenancy::class);
Event::listen(TenancyEnded::class, RevertToCentralContext::class);
TenantConfig::$storageToConfigMap = [
'paypal_api_public' => [
'services.paypal.public1',
'services.paypal.public2',
],
'paypal_api_private' => 'services.paypal.private',
];
TenantConfig::$storageToConfigMap = [
'paypal_api_public' => [
'services.paypal.public1',
'services.paypal.public2',
],
'paypal_api_private' => 'services.paypal.private',
];
$tenant = Tenant::create([
'paypal_api_public' => 'foo',
'paypal_api_private' => 'bar',
]);
$tenant = Tenant::create([
'paypal_api_public' => 'foo',
'paypal_api_private' => 'bar',
]);
tenancy()->initialize($tenant);
pest()->assertSame([
'public1' => 'foo',
'public2' => 'foo',
'private' => 'bar',
], config('services.paypal'));
tenancy()->initialize($tenant);
$this->assertSame([
'public1' => 'foo',
'public2' => 'foo',
'private' => 'bar',
], config('services.paypal'));
tenancy()->end();
$this->assertSame([
'public1' => null,
'public2' => null,
'private' => null,
], config('services.paypal'));
}
}
tenancy()->end();
pest()->assertSame([
'public1' => null,
'public2' => null,
'private' => null,
], config('services.paypal'));
});