Skip to content

Commit c7090c6

Browse files
authored
Merge pull request #193 from ejgandelaberon/master
feat: Macroable DataTable Base Class
2 parents ab403af + 63586c5 commit c7090c6

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/Services/DataTable.php

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Illuminate\Support\Arr;
1616
use Illuminate\Support\Collection;
1717
use Illuminate\Support\LazyCollection;
18+
use Illuminate\Support\Traits\Macroable;
1819
use Maatwebsite\Excel\ExcelServiceProvider;
1920
use OpenSpout\Common\Entity\Style\Style;
2021
use Rap2hpoutre\FastExcel\FastExcel;
@@ -29,6 +30,8 @@
2930

3031
abstract class DataTable implements DataTableButtons
3132
{
33+
use Macroable;
34+
3235
/**
3336
* DataTables print preview view.
3437
*

tests/DataTableServiceTest.php

+15
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Yajra\DataTables\Buttons\Tests\DataTables\UsersDataTable;
1111
use Yajra\DataTables\Buttons\Tests\Models\User;
1212
use Yajra\DataTables\EloquentDataTable;
13+
use Yajra\DataTables\Services\DataTable;
1314

1415
class DataTableServiceTest extends TestCase
1516
{
@@ -80,6 +81,20 @@ public function it_allows_response_callback(): void
8081
$this->assertEquals(1, $response->json('recordsFiltered'));
8182
}
8283

84+
#[Test]
85+
public function it_is_macroable(): void
86+
{
87+
$dataTable = new class extends DataTable {};
88+
89+
$this->assertObjectHasProperty('macros', $dataTable);
90+
$this->assertTrue(method_exists($dataTable, 'macro'), 'Method macro does not exist.');
91+
$this->assertTrue(method_exists($dataTable, 'mixin'), 'Method mixin does not exist.');
92+
93+
DataTable::macro('macroMethod', fn () => 'macro');
94+
95+
$this->assertEquals('macro', $dataTable->macroMethod());
96+
}
97+
8398
protected function setUp(): void
8499
{
85100
parent::setUp();

0 commit comments

Comments
 (0)