0]); $this->user = User::factory()->create(); $this->team = Team::factory()->create(); $this->team->members()->attach($this->user, ['role' => 'owner']); $this->project = Project::factory()->create([ 'team_id' => $this->team->id, ]); $this->environment = Environment::factory()->create([ 'project_id' => $this->project->id, ]); $this->actingAs($this->user); }); it('does not load environment variables during mount', function () { $application = Application::factory()->create([ 'environment_id' => $this->environment->id, ]); EnvironmentVariable::create([ 'key' => 'API_KEY', 'value' => 'secret', 'resourceable_type' => Application::class, 'resourceable_id' => $application->id, ]); $component = Livewire::test(All::class, ['resource' => $application]); expect($component->get('readyToLoad'))->toBeFalse() ->and($component->instance()->environmentVariables)->toHaveCount(0) ->and($component->get('variables'))->toBeNull(); }); it('loads environment variables when loadEnvironmentVariables is called', function () { $application = Application::factory()->create([ 'environment_id' => $this->environment->id, ]); EnvironmentVariable::create([ 'key' => 'API_KEY', 'value' => 'secret', 'resourceable_type' => Application::class, 'resourceable_id' => $application->id, ]); EnvironmentVariable::create([ 'key' => 'DATABASE_URL', 'value' => 'postgres://example', 'resourceable_type' => Application::class, 'resourceable_id' => $application->id, ]); $component = Livewire::test(All::class, ['resource' => $application]) ->assertSee('Loading environment variables...') ->call('loadEnvironmentVariables') ->assertSet('readyToLoad', true) ->assertDontSee('Loading environment variables...') ->assertSee('API_KEY'); expect($component->instance()->environmentVariables->pluck('key')->all()) ->toContain('API_KEY') ->toContain('DATABASE_URL'); }); it('builds developer view text only after switching to developer view', function () { $application = Application::factory()->create([ 'environment_id' => $this->environment->id, ]); EnvironmentVariable::create([ 'key' => 'API_KEY', 'value' => 'secret', 'resourceable_type' => Application::class, 'resourceable_id' => $application->id, ]); $component = Livewire::test(All::class, ['resource' => $application]) ->call('loadEnvironmentVariables'); expect($component->get('variables'))->toBeNull(); $component->call('switch')->assertSet('view', 'dev'); expect($component->get('variables'))->toContain('API_KEY=secret'); }); it('is idempotent when loadEnvironmentVariables is called twice', function () { $application = Application::factory()->create([ 'environment_id' => $this->environment->id, ]); EnvironmentVariable::create([ 'key' => 'API_KEY', 'value' => 'secret', 'resourceable_type' => Application::class, 'resourceable_id' => $application->id, ]); $component = Livewire::test(All::class, ['resource' => $application]) ->call('loadEnvironmentVariables') ->call('loadEnvironmentVariables') ->assertSet('readyToLoad', true); expect($component->instance()->environmentVariables->pluck('key')->all()) ->toContain('API_KEY'); });