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

separate TestCase for redirect tests

This commit is contained in:
Abrar Ahmad 2022-11-30 12:21:43 +05:00
parent be6b2f8248
commit 55560563b5
4 changed files with 56 additions and 10 deletions

View file

@ -283,7 +283,7 @@ return [
// Stancl\Tenancy\Features\TelescopeTags::class,
// Stancl\Tenancy\Features\UniversalRoutes::class,
// Stancl\Tenancy\Features\TenantConfig::class, // https://tenancyforlaravel.com/docs/v3/features/tenant-config
Stancl\Tenancy\Features\CrossDomainRedirect::class, // https://tenancyforlaravel.com/docs/v3/features/cross-domain-redirect
// Stancl\Tenancy\Features\CrossDomainRedirect::class, // https://tenancyforlaravel.com/docs/v3/features/cross-domain-redirect
],
/**

View file

@ -2,9 +2,16 @@
use Stancl\Tenancy\Tests\TestCase;
uses(TestCase::class)->in(__DIR__);
uses(TestCase::class)->in(...filesAndFolder());
function pest(): TestCase
function pest(): \Orchestra\Testbench\TestCase
{
return Pest\TestSuite::getInstance()->test;
}
function filesAndFolder(): array
{
$dirs = scandir(__DIR__);
return array_filter($dirs, fn($dir) => ! in_array($dir, ['.', '..', 'WithoutTenancy'], true));
}

View file

@ -4,10 +4,16 @@ declare(strict_types=1);
use Illuminate\Support\Facades\Route;
use Stancl\Tenancy\Features\CrossDomainRedirect;
use Stancl\Tenancy\TenancyServiceProvider;
use Stancl\Tenancy\Tests\Etc\Tenant;
use Stancl\Tenancy\Tests\WithoutTenancy\TestCase;
uses(TestCase::class);
test('tenant redirect macro replaces only the hostname', function () {
// `CrossDomainRedirect` feature already enabled in config
config()->set('tenancy.features', [CrossDomainRedirect::class]);
$this->app->register(new TenancyServiceProvider($this->app));
Route::get('/foobar', function () {
return 'Foo';
@ -17,7 +23,7 @@ test('tenant redirect macro replaces only the hostname', function () {
return redirect()->route('home')->domain('abcd');
});
$tenant = Tenant::create();
$tenant = Tenant::create(['id' => 'foo']); // todo automatic id generation is not working
tenancy()->initialize($tenant);
pest()->get('/redirect')
@ -34,8 +40,12 @@ test('tenant route helper generates correct url', function () {
});
// Check that `domain()` can be called on a redirect before tenancy is used (regression test for #949)
test('redirect from central to tenant works', function () {
// `CrossDomainRedirect` feature already enabled in config
test('redirect from central to tenant works', function (bool $enabled, bool $shouldThrow) {
if ($enabled) {
config()->set('tenancy.features', [CrossDomainRedirect::class]);
}
$this->app->register(new TenancyServiceProvider($this->app));
Route::get('/foobar', function () {
return 'Foo';
@ -45,6 +55,22 @@ test('redirect from central to tenant works', function () {
return redirect()->route('home')->domain('abcd');
});
pest()->get('/redirect')
->assertRedirect('http://abcd/foobar');
});
try {
pest()->get('/redirect')
->assertRedirect('http://abcd/foobar');
if ($shouldThrow) {
pest()->fail('Exception not thrown');
}
} catch (Throwable $e) {
if ($shouldThrow) {
pest()->assertTrue(true); // empty assertion to make the test pass
} else {
pest()->fail('Exception thrown: ' . $e->getMessage());
}
}
})->with([
['enabled' => false, 'shouldThrow' => true],
['enabled' => true, 'shouldThrow' => false],
]);

View file

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Tests\WithoutTenancy;
abstract class TestCase extends \Stancl\Tenancy\Tests\TestCase
{
protected function getPackageProviders($app)
{
return []; // We will provide TenancyServiceProvider in tests
}
}