'https://example.test', 'db_host' => $db['host'] ?? '127.0.0.1', 'db_port' => $db['port'] ?? 3306, 'db_database' => $db['database'] ?? 'tracer_speedBB_test', 'db_username' => $db['username'] ?? 'root', 'db_password' => $db['password'] ?? '', 'admin_name' => 'Admin', 'admin_email' => 'admin@example.com', 'admin_password' => 'Password123!', ], $overrides); return Request::create('https://example.test/install', 'POST', $data); } it('shows installer when env missing', function (): void { withEnvBackup(function (): void { if (file_exists(base_path('.env'))) { unlink(base_path('.env')); } $controller = new InstallerController(); $request = Request::create('https://example.test/install', 'GET'); $response = $controller->show($request); expect($response)->toBeInstanceOf(Illuminate\View\View::class); }); }); it('redirects installer when env exists', function (): void { withEnvBackup(function (): void { file_put_contents(base_path('.env'), "APP_KEY=base64:test\n"); $controller = new InstallerController(); $request = Request::create('https://example.test/install', 'GET'); $response = $controller->show($request); expect($response)->toBeInstanceOf(Illuminate\Http\RedirectResponse::class); }); }); it('store redirects when env exists', function (): void { withEnvBackup(function (): void { file_put_contents(base_path('.env'), "APP_KEY=base64:test\n"); $controller = new InstallerController(); $request = installerRequest(); $response = $controller->store($request); expect($response)->toBeInstanceOf(Illuminate\Http\RedirectResponse::class); }); }); it('store handles db connection failure', function (): void { withEnvBackup(function (): void { if (file_exists(base_path('.env'))) { unlink(base_path('.env')); } DB::shouldReceive('purge')->once(); DB::shouldReceive('connection->getPdo')->andThrow(new RuntimeException('boom')); $controller = new InstallerController(); $request = installerRequest(['app_url' => 'https://example.test']); $response = $controller->store($request); expect($response)->toBeInstanceOf(Illuminate\View\View::class); expect(file_exists(base_path('.env')))->toBeFalse(); }); }); it('store handles migration failure', function (): void { withEnvBackup(function (): void { if (file_exists(base_path('.env'))) { unlink(base_path('.env')); } DB::shouldReceive('purge')->once(); DB::shouldReceive('connection->getPdo')->andReturn(true); Artisan::shouldReceive('call')->andReturn(1); $controller = new InstallerController(); $request = installerRequest(); $response = $controller->store($request); expect($response)->toBeInstanceOf(Illuminate\View\View::class); expect(file_exists(base_path('.env')))->toBeFalse(); }); }); it('store completes installation on success', function (): void { withEnvBackup(function (): void { if (file_exists(base_path('.env'))) { unlink(base_path('.env')); } DB::shouldReceive('purge')->once(); DB::shouldReceive('connection->getPdo')->andReturn(true); Artisan::shouldReceive('call')->andReturn(0); $controller = new InstallerController(); $request = installerRequest(['admin_email' => 'success@example.com']); $response = $controller->store($request); expect($response)->toBeInstanceOf(Illuminate\View\View::class); $user = User::where('email', 'success@example.com')->first(); expect($user)->not->toBeNull(); expect(Role::where('name', 'ROLE_ADMIN')->exists())->toBeTrue(); expect(Role::where('name', 'ROLE_FOUNDER')->exists())->toBeTrue(); if (file_exists(base_path('.env'))) { unlink(base_path('.env')); } }); });