mirror of
https://github.com/archtechx/tenancy.git
synced 2025-12-12 10:54:04 +00:00
Cloning: addTenantMiddleware() for specifying ID MW for cloned route
Previously, tenant identification middleware was typically specified for the cloned route by "inheriting" it from the central route, which necessarily meant that the central route had to also be marked as universal so it could continue working in the central context -- despite presumably not being usable in the tenant context, thus being universal for no proper reason. In such cases, universal routes were used mainly as a mechanism for specifying the tenant identification middleware to use on the cloned tenant route. Given that recent refactors of the cloning feature have made it more customizable and a bit nicer to use "multiple times", i.e. run handle() with a few different configurations of the action, letting the developer specify the used tenant middleware using a method like this only makes sense. The feature also becomes more independently usable and not just a "hack for universal routes with path identification".
This commit is contained in:
parent
97c5afd2cf
commit
197513dd84
2 changed files with 43 additions and 3 deletions
|
|
@ -437,3 +437,30 @@ test('cloning a route without a prefix or differing domains overrides the origin
|
|||
expect(collect(RouteFacade::getRoutes()->get())->map->getName())->toContain('tenant.foo');
|
||||
expect(collect(RouteFacade::getRoutes()->get())->map->getName())->not()->toContain('foo');
|
||||
});
|
||||
|
||||
test('addTenantMiddleware can be used to specify the tenant middleware for the cloned route', function () {
|
||||
RouteFacade::get('/foo', fn () => true)->name('foo')->middleware(['clone']);
|
||||
RouteFacade::get('/bar', fn () => true)->name('bar')->middleware(['clone']);
|
||||
|
||||
$cloneAction = app(CloneRoutesAsTenant::class);
|
||||
|
||||
$cloneAction->cloneRoute('foo')->addTenantMiddleware([InitializeTenancyByPath::class])->handle();
|
||||
expect(collect(RouteFacade::getRoutes()->get())->map->getName())->toContain('tenant.foo');
|
||||
$cloned = RouteFacade::getRoutes()->getByName('tenant.foo');
|
||||
expect($cloned->uri())->toBe('{tenant}/foo');
|
||||
expect($cloned->getName())->toBe('tenant.foo');
|
||||
expect(tenancy()->getRouteMiddleware($cloned))->toBe([InitializeTenancyByPath::class]);
|
||||
|
||||
$cloneAction->cloneRoute('bar')
|
||||
->addTenantMiddleware([InitializeTenancyByDomain::class])
|
||||
->domain('foo.localhost')
|
||||
->addTenantParameter(false)
|
||||
->tenantParameterBeforePrefix(false)
|
||||
->handle();
|
||||
expect(collect(RouteFacade::getRoutes()->get())->map->getName())->toContain('tenant.bar');
|
||||
$cloned = RouteFacade::getRoutes()->getByName('tenant.bar');
|
||||
expect($cloned->uri())->toBe('bar');
|
||||
expect($cloned->getName())->toBe('tenant.bar');
|
||||
expect($cloned->getDomain())->toBe('foo.localhost');
|
||||
expect(tenancy()->getRouteMiddleware($cloned))->toBe([InitializeTenancyByDomain::class]);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue