Skip to content
This repository was archived by the owner on Feb 14, 2026. It is now read-only.

Commit acbbc4a

Browse files
Merge pull request #321 from CodeWithDennis/add-individually-searchable-test
Add test for individually searchable columns in resource table
2 parents 132e386 + f51fb08 commit acbbc4a

File tree

5 files changed

+40
-0
lines changed

5 files changed

+40
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ This package generates comprehensive PEST tests for your Filament resources. Her
4949

5050
### Table Functionality Tests
5151
- **CanSearchColumnTest** - Tests that searchable columns work correctly
52+
- **CanSearchColumnIndividuallyTest** - Tests that individual column search works correctly
5253
- **CanSortColumnTest** - Tests that sortable columns work correctly
5354
- **CanPaginateRecordsTest** - Tests that pagination works correctly
5455

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
it('can search `:dataset` column individually', function (string $column): void {
2+
$records = {{ $getResourceModel() }}::factory(3)->create();
3+
$search = data_get($records->first(), $column);
4+
5+
livewire({{ $getPageClass('index') }}::class)
6+
@if($isResourceTableLoadingDeferred())->loadTable()@endif
7+
->searchTableColumns([$column => $search instanceof BackedEnum ? $search->value : $search])
8+
->assertCanSeeTableRecords($records->filter(fn (Illuminate\Database\Eloquent\Model $record) => data_get($record, $column) == $search))
9+
->assertCanNotSeeTableRecords($records->filter(fn (Illuminate\Database\Eloquent\Model $record) => data_get($record, $column) != $search));
10+
})->with([@foreach ($getResourceTableIndividualSearchableColumnKeys() as $column)'{{ $column }}',@endforeach]);

src/Commands/FilamentTestsCommand.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanPaginateRecordsTest;
1515
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanRenderColumnTest;
1616
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanRenderIndexPageTest;
17+
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanSearchColumnIndividuallyTest;
1718
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanSearchColumnTest;
1819
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanSortColumnTest;
1920
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\HasColumnTest;
@@ -69,6 +70,7 @@ protected function getRenderers(): array
6970
HidesColumnTest::class,
7071
CanSortColumnTest::class,
7172
CanSearchColumnTest::class,
73+
CanSearchColumnIndividuallyTest::class,
7274
CanDeleteRecordTest::class,
7375
CanNotDisplayTrashedRecordsByDefault::class,
7476
CanPaginateRecordsTest::class,

src/Concerns/Resources/InteractsWithTables.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@ public function getResourceTableSearchableColumnKeys(): array
102102
return $this->getResourceTableColumnKeysFrom($this->getResourceTableSearchableColumns());
103103
}
104104

105+
public function getResourceTableIndividualSearchableColumns(): Collection
106+
{
107+
return $this->getResourceTableColumns()
108+
->filter(fn (Column $column): bool => $column->isIndividuallySearchable());
109+
}
110+
111+
public function getResourceTableIndividualSearchableColumnKeys(): array
112+
{
113+
return $this->getResourceTableColumnKeysFrom($this->getResourceTableIndividualSearchableColumns());
114+
}
115+
105116
public function getResourceTableActions(): array
106117
{
107118
return $this->getResourceTable()->getRecordActions();
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index;
4+
5+
use CodeWithDennis\FilamentTests\TestRenderers\BaseTest;
6+
7+
class CanSearchColumnIndividuallyTest extends BaseTest
8+
{
9+
public ?string $view = 'filament-tests::resources.pages.index.can-search-column-individually';
10+
11+
public function getShouldRender(): bool
12+
{
13+
return $this->hasPage('index')
14+
&& $this->getResourceTableIndividualSearchableColumns()->isNotEmpty();
15+
}
16+
}

0 commit comments

Comments
 (0)