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

Commit 3d53825

Browse files
Merge pull request #323 from CodeWithDennis/add-description-tests
Add description tests
2 parents acbbc4a + 7feedb4 commit 3d53825

File tree

7 files changed

+86
-0
lines changed

7 files changed

+86
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ This package generates comprehensive PEST tests for your Filament resources. Her
4646
- **ShowsColumnTest** - Tests that explicitly visible columns are shown
4747
- **HidesColumnTest** - Tests that explicitly hidden columns are hidden
4848
- **CanNotDisplayTrashedRecordsByDefault** - Tests that trashed records are not displayed by default if soft deletes are enabled
49+
- **ColumnHasDescriptionBelowTest** - Tests that columns with descriptions display them below
50+
- **ColumnHasDescriptionAboveTest** - Tests that columns with descriptions display them above
4951

5052
### Table Functionality Tests
5153
- **CanSearchColumnTest** - Tests that searchable columns work correctly
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
it('`:dataset` column has the correct description above', function (string $column, string $content): void {
2+
$records = {{ $getResourceModel() }}::factory(10)->create();
3+
4+
$record = $records->first();
5+
6+
livewire({{ $getPageClass('index') }}::class)
7+
->assertTableColumnHasDescription($column, $content, $record, 'above');
8+
})->with([
9+
@foreach ($getResourceTableTextColumnsWithDescriptionAbove()->mapWithKeys(fn (Filament\Tables\Columns\TextColumn $column) => [$column->getName() => $column->getDescriptionAbove()]) as $column => $content)
10+
['{{ $column }}', '{{ $content }}'],
11+
@endforeach
12+
]);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
it('`:dataset` column has the correct description below', function (string $column, string $content): void {
2+
$records = {{ $getResourceModel() }}::factory(10)->create();
3+
4+
$record = $records->first();
5+
6+
livewire({{ $getPageClass('index') }}::class)
7+
->assertTableColumnHasDescription($column, $content, $record, 'below');
8+
})->with([
9+
@foreach ($getResourceTableTextColumnsWithDescriptionBelow()->mapWithKeys(fn (Filament\Tables\Columns\TextColumn $column) => [$column->getName() => $column->getDescriptionBelow()]) as $column => $content)
10+
['{{ $column }}', '{{ $content }}'],
11+
@endforeach
12+
]);

src/Commands/FilamentTestsCommand.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanSearchColumnIndividuallyTest;
1818
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanSearchColumnTest;
1919
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanSortColumnTest;
20+
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\ColumnHasDescriptionAboveTest;
21+
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\ColumnHasDescriptionBelowTest;
2022
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\HasColumnTest;
2123
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\HidesColumnTest;
2224
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\ShowsColumnTest;
@@ -68,6 +70,8 @@ protected function getRenderers(): array
6870
HasColumnTest::class,
6971
ShowsColumnTest::class,
7072
HidesColumnTest::class,
73+
ColumnHasDescriptionAboveTest::class,
74+
ColumnHasDescriptionBelowTest::class,
7175
CanSortColumnTest::class,
7276
CanSearchColumnTest::class,
7377
CanSearchColumnIndividuallyTest::class,

src/Concerns/Resources/InteractsWithTables.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Filament\Actions\Action;
66
use Filament\Resources\Pages\ListRecords;
77
use Filament\Tables\Columns\Column;
8+
use Filament\Tables\Columns\TextColumn;
89
use Filament\Tables\Table;
910
use Illuminate\Support\Collection;
1011

@@ -137,4 +138,27 @@ public function getResourceTableDefaultPaginationPageOption(): ?int
137138
{
138139
return $this->getResourceTable()->getDefaultPaginationPageOption();
139140
}
141+
142+
public function getResourceTableTextColumns(): Collection
143+
{
144+
return $this->getResourceTableColumns()
145+
->filter(fn (Column $column): bool => $column instanceof TextColumn);
146+
}
147+
148+
public function getResourceTableTextColumnKeys(): array
149+
{
150+
return $this->getResourceTableColumnKeysFrom($this->getResourceTableTextColumns());
151+
}
152+
153+
public function getResourceTableTextColumnsWithDescriptionAbove(): Collection
154+
{
155+
return $this->getResourceTableTextColumns()
156+
->filter(fn (TextColumn $column): bool => filled($column->getDescriptionAbove()));
157+
}
158+
159+
public function getResourceTableTextColumnsWithDescriptionBelow(): Collection
160+
{
161+
return $this->getResourceTableTextColumns()
162+
->filter(fn (TextColumn $column): bool => filled($column->getDescriptionBelow()));
163+
}
140164
}
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 ColumnHasDescriptionAboveTest extends BaseTest
8+
{
9+
public ?string $view = 'filament-tests::resources.pages.index.column-has-description-above';
10+
11+
public function getShouldRender(): bool
12+
{
13+
return $this->hasPage('index')
14+
&& $this->getResourceTableTextColumnsWithDescriptionAbove()->isNotEmpty();
15+
}
16+
}
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 ColumnHasDescriptionBelowTest extends BaseTest
8+
{
9+
public ?string $view = 'filament-tests::resources.pages.index.column-has-description-below';
10+
11+
public function getShouldRender(): bool
12+
{
13+
return $this->hasPage('index')
14+
&& $this->getResourceTableTextColumnsWithDescriptionBelow()->isNotEmpty();
15+
}
16+
}

0 commit comments

Comments
 (0)