File tree Expand file tree Collapse file tree 3 files changed +55
-9
lines changed
Expand file tree Collapse file tree 3 files changed +55
-9
lines changed Original file line number Diff line number Diff line change 2323use Filament \Schemas \Schema ;
2424use Filament \Tables ;
2525use Filament \Tables \Table ;
26+ use Illuminate \Database \Eloquent \Builder ;
2627use Illuminate \Support \HtmlString ;
2728
2829class PluginResource extends Resource
@@ -333,7 +334,11 @@ public static function table(Table $table): Table
333334 ])
334335 ->filters ([
335336 Tables \Filters \SelectFilter::make ('status ' )
336- ->options (PluginStatus::class),
337+ ->options (PluginStatus::class)
338+ ->query (fn (Builder $ query , array $ data ): Builder => filled ($ data ['value ' ])
339+ ? $ query ->where ('status ' , $ data ['value ' ])
340+ : $ query ->where ('status ' , '!= ' , PluginStatus::Draft)
341+ ),
337342 Tables \Filters \SelectFilter::make ('type ' )
338343 ->options (PluginType::class),
339344 Tables \Filters \TernaryFilter::make ('is_official ' )
Original file line number Diff line number Diff line change 22
33namespace App \Filament \Resources \PluginResource \Pages ;
44
5- use App \Enums \PluginStatus ;
65use App \Filament \Resources \PluginResource ;
76use Filament \Actions ;
87use Filament \Resources \Pages \ListRecords ;
9- use Illuminate \Database \Eloquent \Builder ;
108
119class ListPlugins extends ListRecords
1210{
@@ -18,10 +16,4 @@ protected function getHeaderActions(): array
1816 Actions \CreateAction::make (),
1917 ];
2018 }
21-
22- protected function getTableQuery (): ?Builder
23- {
24- return parent ::getTableQuery ()
25- ->where ('status ' , '!= ' , PluginStatus::Draft);
26- }
2719}
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Tests \Feature \Filament ;
4+
5+ use App \Enums \PluginStatus ;
6+ use App \Filament \Resources \PluginResource \Pages \ListPlugins ;
7+ use App \Models \Plugin ;
8+ use App \Models \User ;
9+ use Illuminate \Foundation \Testing \RefreshDatabase ;
10+ use Livewire \Livewire ;
11+ use Tests \TestCase ;
12+
13+ class PluginListDraftFilterTest extends TestCase
14+ {
15+ use RefreshDatabase;
16+
17+ private User $ admin ;
18+
19+ protected function setUp (): void
20+ {
21+ parent ::setUp ();
22+
23+ $ this ->admin = User::factory ()->create (['email ' => 'admin@test.com ' ]);
24+ config (['filament.users ' => ['admin@test.com ' ]]);
25+ }
26+
27+ public function test_draft_plugins_are_hidden_by_default (): void
28+ {
29+ $ draft = Plugin::factory ()->draft ()->create ();
30+ $ approved = Plugin::factory ()->approved ()->create ();
31+
32+ Livewire::actingAs ($ this ->admin )
33+ ->test (ListPlugins::class)
34+ ->assertCanNotSeeTableRecords ([$ draft ])
35+ ->assertCanSeeTableRecords ([$ approved ]);
36+ }
37+
38+ public function test_draft_plugins_are_visible_when_filtering_by_draft_status (): void
39+ {
40+ $ draft = Plugin::factory ()->draft ()->create ();
41+ $ approved = Plugin::factory ()->approved ()->create ();
42+
43+ Livewire::actingAs ($ this ->admin )
44+ ->test (ListPlugins::class)
45+ ->filterTable ('status ' , PluginStatus::Draft->value )
46+ ->assertCanSeeTableRecords ([$ draft ])
47+ ->assertCanNotSeeTableRecords ([$ approved ]);
48+ }
49+ }
You can’t perform that action at this time.
0 commit comments