Skip to content

Commit 3f3f4e6

Browse files
added event dispatch on column selection with test
1 parent 8d6e6aa commit 3f3f4e6

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

src/Events/ColumnsSelected.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Events;
4+
5+
use Illuminate\Queue\SerializesModels;
6+
use Illuminate\Foundation\Events\Dispatchable;
7+
use JohnDoe\BlogPackage\Models\Post;
8+
9+
class ColumnsSelected
10+
{
11+
use Dispatchable, SerializesModels;
12+
13+
public $columns;
14+
public $key;
15+
16+
public function __construct($key, $columns)
17+
{
18+
$this->key = $key;
19+
$this->columns = $columns;
20+
}
21+
22+
23+
}

src/Traits/WithColumnSelect.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
use Rappasoft\LaravelLivewireTables\Traits\Configuration\ColumnSelectConfiguration;
66
use Rappasoft\LaravelLivewireTables\Traits\Helpers\ColumnSelectHelpers;
7+
use Rappasoft\LaravelLivewireTables\Events\ColumnsSelected;
8+
use Illuminate\Support\Facades\Event;
79

810
trait WithColumnSelect
911
{
@@ -58,13 +60,15 @@ public function selectAllColumns()
5860
{
5961
$this->{$this->tableName}['columns'] = [];
6062
$this->forgetColumnSelectSession();
63+
event(new ColumnsSelected($this->getColumnSelectSessionKey(), $this->selectedColumns));
6164
}
6265

6366
public function deselectAllColumns()
6467
{
6568
$this->{$this->tableName}['columns'] = [];
6669
$this->selectedColumns = [];
6770
session([$this->getColumnSelectSessionKey() => []]);
71+
event(new ColumnsSelected($this->getColumnSelectSessionKey(), $this->selectedColumns));
6872
}
6973

7074
public function updatedSelectedColumns(): void
@@ -75,6 +79,7 @@ public function updatedSelectedColumns(): void
7579
} else {
7680
$this->{$this->tableName}['columns'] = $this->selectedColumns;
7781
session([$this->getColumnSelectSessionKey() => $this->{$this->tableName}['columns']]);
82+
event(new ColumnsSelected($this->getColumnSelectSessionKey(), $this->selectedColumns));
7883
}
7984
}
8085

tests/Events/ColumnsSelectedTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Events;
4+
5+
use Rappasoft\LaravelLivewireTables\Tests\TestCase;
6+
use Rappasoft\LaravelLivewireTables\Events\ColumnsSelected;
7+
use Illuminate\Support\Facades\Event;
8+
9+
10+
class ColumnSelectedTest extends TestCase
11+
{
12+
13+
/** @test */
14+
function an_event_is_emitted_when_a_column_selection_are_updated()
15+
{
16+
Event::fake([
17+
ColumnsSelected::class
18+
]);
19+
20+
$test['columns'] = $this->basicTable->selectedColumns;
21+
$test['key'] = $this->basicTable->getDataTableFingerprint().'-columnSelectEnabled';
22+
23+
// Select all columns to test event trigger
24+
$this->basicTable->selectAllColumns();
25+
26+
Event::assertDispatched(ColumnsSelected::class, function ($event) use ($test) {
27+
return ($event->columns === $test['columns'] && $event->key === $test['key']);
28+
});
29+
}
30+
}

0 commit comments

Comments
 (0)