diff --git a/packages/tables/.stubs.php b/packages/tables/.stubs.php index 697b80753c..6772a28a0b 100644 --- a/packages/tables/.stubs.php +++ b/packages/tables/.stubs.php @@ -169,6 +169,8 @@ namespace Livewire\Features\SupportTesting { public function assertTableFilterVisible(string $name): static{} + public function assertTableFilterHidden(string $name): static{} + public function assertCanSeeTableRecords(array | Collection $records, bool $inOrder = false): static {} public function assertCanNotSeeTableRecords(array | Collection $records): static {} diff --git a/packages/tables/src/Testing/TestsFilters.php b/packages/tables/src/Testing/TestsFilters.php index 7f863675df..8a8ad4208d 100644 --- a/packages/tables/src/Testing/TestsFilters.php +++ b/packages/tables/src/Testing/TestsFilters.php @@ -117,4 +117,22 @@ class TestsFilters return $this; }; } + + public function assertTableFilterHidden(): Closure + { + return function (string $name): static { + $name = $this->instance()->parseTableFilterName($name); + + $filter = $this->instance()->getTable()->getAnyFilter($name); + + $livewireClass = $this->instance()::class; + + Assert::assertTrue( + $filter->isHidden(), + message: "Failed asserting that the table filter with name [{$name}] is hidden on the [{$livewireClass}] component" + ); + + return $this; + }; + } } diff --git a/tests/src/Tables/Filters/FilterTest.php b/tests/src/Tables/Filters/FilterTest.php index dc2aaff48b..acbf20710b 100644 --- a/tests/src/Tables/Filters/FilterTest.php +++ b/tests/src/Tables/Filters/FilterTest.php @@ -107,3 +107,9 @@ it('can check if a filter is visible with assertTableFilterVisible', function () livewire(PostsTable::class) ->assertTableFilterVisible('is_published'); }); + +it('can check if a filter is hidden with assertTableFilterHidden', function (): void { + livewire(PostsTable::class) + ->assertTableFilterHidden('hidden_filter'); +}); + diff --git a/tests/src/Tables/Fixtures/PostsTable.php b/tests/src/Tables/Fixtures/PostsTable.php index 9f85c7657c..e5bb7e4a5a 100644 --- a/tests/src/Tables/Fixtures/PostsTable.php +++ b/tests/src/Tables/Fixtures/PostsTable.php @@ -103,6 +103,8 @@ class PostsTable extends Component implements HasForms, Tables\Contracts\HasTabl ]) ->attribute('is_published'), Tables\Filters\TrashedFilter::make(), + Tables\Filters\SelectFilter::make('hidden_filter') + ->hidden(), ]) ->persistFiltersInSession() ->headerActions([