1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2025-12-12 15:54:03 +00:00

[3.x] Add Vite helper for tenancy (#956)

* Add Vite helper for tenancy

* Move Vite bundler to an Optional Feature

* Rename to foundation vite

* Add ViteBundlerTest

* Add missing end of file

* Update tests

* remove unnecessary end() call

Co-authored-by: Samuel Štancl <samuel@archte.ch>
This commit is contained in:
Wilsen Hernández 2022-09-27 22:28:30 -04:00 committed by Samuel Štancl
parent 38fc706c97
commit d093c1387d
5 changed files with 75 additions and 0 deletions

View file

@ -168,6 +168,7 @@ return [
// Stancl\Tenancy\Features\UniversalRoutes::class, // Stancl\Tenancy\Features\UniversalRoutes::class,
// Stancl\Tenancy\Features\TenantConfig::class, // https://tenancyforlaravel.com/docs/v3/features/tenant-config // 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
// Stancl\Tenancy\Features\ViteBundler::class,
], ],
/** /**

View file

@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace Stancl\Tenancy\Features;
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Vite as FoundationVite;
use Stancl\Tenancy\Contracts\Feature;
use Stancl\Tenancy\Tenancy;
use Stancl\Tenancy\Vite as StanclVite;
class ViteBundler implements Feature
{
public function __construct(protected Application $app) { }
public function bootstrap(Tenancy $tenancy): void
{
$this->app->singleton(FoundationVite::class, StanclVite::class);
}
}

View file

@ -65,6 +65,7 @@ class TenancyServiceProvider extends ServiceProvider
$this->app->singleton(Commands\Rollback::class, function ($app) { $this->app->singleton(Commands\Rollback::class, function ($app) {
return new Commands\Rollback($app['migrator']); return new Commands\Rollback($app['migrator']);
}); });
$this->app->singleton(Commands\Seed::class, function ($app) { $this->app->singleton(Commands\Seed::class, function ($app) {
return new Commands\Seed($app['db']); return new Commands\Seed($app['db']);
}); });

20
src/Vite.php Normal file
View file

@ -0,0 +1,20 @@
<?php
namespace Stancl\Tenancy;
use Illuminate\Foundation\Vite as BaseVite;
class Vite extends BaseVite
{
/**
* Generate an asset path for the application.
*
* @param string $path
* @param bool|null $secure
* @return string
*/
protected function assetPath($path, $secure = null)
{
return global_asset($path);
}
}

View file

@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
use Illuminate\Foundation\Vite as FoundationVite;
use Illuminate\Support\Facades\App;
use Stancl\Tenancy\Features\ViteBundler;
use Stancl\Tenancy\Tests\Etc\Tenant;
use Stancl\Tenancy\Vite as StanclVite;
test('replaces the vite helper instance with custom class', function () {
$vite = app(\Illuminate\Foundation\Vite::class);
expect($vite)->toBeInstanceOf(FoundationVite::class);
expect($vite)->not->toBeInstanceOf(StanclVite::class);
config([
'tenancy.features' => [ViteBundler::class],
]);
$tenant = Tenant::create();
tenancy()->initialize($tenant);
app()->forgetInstance(\Illuminate\Foundation\Vite::class);
$vite = app(\Illuminate\Foundation\Vite::class);
expect($vite)->toBeInstanceOf(StanclVite::class);
});