diff --git a/src/Features/ViteBundler.php b/src/Features/ViteBundler.php index 2bf690bb..76b96a48 100644 --- a/src/Features/ViteBundler.php +++ b/src/Features/ViteBundler.php @@ -4,16 +4,18 @@ declare(strict_types=1); namespace Stancl\Tenancy\Features; +use Illuminate\Foundation\Application; use Illuminate\Foundation\Vite as FoundationVite; -use Illuminate\Support\Facades\App; use Stancl\Tenancy\Contracts\Feature; use Stancl\Tenancy\Tenancy; -use Stancl\Tenancy\Vite; +use Stancl\Tenancy\Vite as StanclVite; class ViteBundler implements Feature { + public function __construct(protected Application $app) { } + public function bootstrap(Tenancy $tenancy): void { - App::singleton(FoundationVite::class, Vite::class); + $this->app->singleton(FoundationVite::class, StanclVite::class); } } diff --git a/tests/Features/ViteBundlerTest.php b/tests/Features/ViteBundlerTest.php new file mode 100644 index 00000000..106e028e --- /dev/null +++ b/tests/Features/ViteBundlerTest.php @@ -0,0 +1,41 @@ +toBeInstanceOf(FoundationVite::class); + + expect($concreteBindings(App::getInstance())) + ->not->toBeInstanceOf(StanclVite::class); + + config([ + 'tenancy.features' => [ViteBundler::class], + ]); + + $tenant = Tenant::create(); + + tenancy()->initialize($tenant); + + $concreteBindings = App::getBindings()[FoundationVite::class]['concrete']; + + expect($concreteBindings) + ->toBeCallable(); + + expect($concreteBindings(App::getInstance())) + ->toBeInstanceOf(FoundationVite::class); + + expect($concreteBindings(App::getInstance())) + ->toBeInstanceOf(StanclVite::class); + + tenancy()->end(); +}); \ No newline at end of file