create(); $user = User::factory()->create(); $user->teams()->attach($team, ['role' => $role]); return [$user, $team]; } function createProjectForTeam(Team $team): void { Project::create([ 'uuid' => (string) Str::uuid(), 'name' => 'Test Project', 'team_id' => $team->id, ]); } function createServerWithKeyForTeam(Team $team): void { $keyId = DB::table('private_keys')->insertGetId([ 'uuid' => (string) Str::uuid(), 'name' => 'Test Key', 'private_key' => 'test-key', 'team_id' => $team->id, 'created_at' => now(), 'updated_at' => now(), ]); Server::factory()->create([ 'team_id' => $team->id, 'private_key_id' => $keyId, ]); } test('admin sees add project button on dashboard', function () { [$user, $team] = setupDashboardUser('admin'); $this->actingAs($user); session(['currentTeam' => $team]); createProjectForTeam($team); Livewire::test(Dashboard::class) ->assertSee('New Project'); }); test('member does not see add project button on dashboard', function () { [$user, $team] = setupDashboardUser('member'); $this->actingAs($user); session(['currentTeam' => $team]); createProjectForTeam($team); Livewire::test(Dashboard::class) ->assertDontSee('New Project'); }); test('admin sees add server button on dashboard', function () { [$user, $team] = setupDashboardUser('admin'); $this->actingAs($user); session(['currentTeam' => $team]); createServerWithKeyForTeam($team); Livewire::test(Dashboard::class) ->assertSee('New Server'); }); test('member does not see add server button on dashboard', function () { [$user, $team] = setupDashboardUser('member'); $this->actingAs($user); session(['currentTeam' => $team]); createServerWithKeyForTeam($team); Livewire::test(Dashboard::class) ->assertDontSee('New Server'); });