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

Commit 93bbab8

Browse files
committed
Add tests for showing and hiding table columns
1 parent 82f17fd commit 93bbab8

File tree

6 files changed

+74
-0
lines changed

6 files changed

+74
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
it('hides `:dataset` column', function (string $column): void {
2+
livewire({{ $getPageClass('index') }}::class)
3+
->assertTableColumnHidden($column);
4+
})->with([@foreach ($getResourceHiddenTableColumnKeys() as $column)'{{ $column }}',@endforeach]);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
it('shows `:dataset` column', function (string $column): void {
2+
livewire({{ $getPageClass('index') }}::class)
3+
->assertTableColumnVisible($column);
4+
})->with([@foreach ($getResourceVisibleTableColumnKeys() as $column)'{{ $column }}',@endforeach]);

src/Commands/FilamentTestsCommand.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanRenderColumnTest;
1313
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\CanRenderIndexPageTest;
1414
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\HasColumnTest;
15+
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\HidesColumnTest;
16+
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\Index\ShowsColumnTest;
1517
use CodeWithDennis\FilamentTests\TestRenderers\Resources\Pages\View\CanRenderViewPageTest;
1618
use Illuminate\Console\Command;
1719

@@ -50,6 +52,8 @@ protected function getRenderers(): array
5052
CanRenderColumnTest::class,
5153
CanNotRenderColumnTest::class,
5254
HasColumnTest::class,
55+
ShowsColumnTest::class,
56+
HidesColumnTest::class,
5357

5458
CanRenderCreatePageTest::class,
5559

src/Concerns/Resources/InteractsWithTables.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,36 @@ public function getResourceInitiallyHiddenTableColumnKeys(): array
6161
->all();
6262
}
6363

64+
public function getResourceVisibleTableColumns(): Collection
65+
{
66+
return $this->getResourceTableColumns()
67+
->filter(fn (Column $column): bool => $column->isVisible());
68+
}
69+
70+
public function getResourceVisibleTableColumnKeys(): array
71+
{
72+
return $this->getResourceVisibleTableColumns()
73+
->map(fn (Column $column): string => $column->getName())
74+
->filter()
75+
->values()
76+
->all();
77+
}
78+
79+
public function getResourceHiddenTableColumns(): Collection
80+
{
81+
return $this->getResourceTableColumns()
82+
->filter(fn (Column $column): bool => ! $column->isVisible());
83+
}
84+
85+
public function getResourceHiddenTableColumnKeys(): array
86+
{
87+
return $this->getResourceHiddenTableColumns()
88+
->map(fn (Column $column): string => $column->getName())
89+
->filter()
90+
->values()
91+
->all();
92+
}
93+
6494
public function getResourceSortableTableColumns(): Collection
6595
{
6696
return $this->getResourceTableColumns()
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 HidesColumnTest extends BaseTest
8+
{
9+
public ?string $view = 'filament-tests::resources.pages.index.hides-column';
10+
11+
public function getShouldRender(): bool
12+
{
13+
return $this->hasPage('index')
14+
&& $this->getResourceHiddenTableColumns()->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 ShowsColumnTest extends BaseTest
8+
{
9+
public ?string $view = 'filament-tests::resources.pages.index.shows-column';
10+
11+
public function getShouldRender(): bool
12+
{
13+
return $this->hasPage('index')
14+
&& $this->getResourceVisibleTableColumns()->isNotEmpty();
15+
}
16+
}

0 commit comments

Comments
 (0)