Skip to content

Commit 59e71d1

Browse files
committed
Add test for before & response callback
yajra/laravel-datatables#2777
1 parent 405e267 commit 59e71d1

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

tests/DataTableServiceTest.php

+40-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44

55
use Illuminate\Foundation\Testing\DatabaseTransactions;
66
use Illuminate\Http\Response;
7+
use Illuminate\Support\Collection;
78
use Symfony\Component\HttpFoundation\BinaryFileResponse;
89
use Yajra\DataTables\Buttons\Tests\DataTables\UsersDataTable;
10+
use Yajra\DataTables\Buttons\Tests\Models\User;
11+
use Yajra\DataTables\EloquentDataTable;
912

1013
class DataTableServiceTest extends TestCase
1114
{
@@ -56,12 +59,48 @@ public function it_can_return_a_pdf_file()
5659
$this->assertInstanceOf(Response::class, $response->baseResponse);
5760
}
5861

62+
/** @test */
63+
public function it_allows_before_response_callback()
64+
{
65+
$response = $this->getAjax('users/before');
66+
$response->assertOk();
67+
68+
$row = $response['data'][0];
69+
$this->assertEquals($row['name'].'X', $row['nameX']);
70+
}
71+
72+
/** @test */
73+
public function it_allows_response_callback()
74+
{
75+
$response = $this->getAjax('users/response');
76+
$response->assertOk();
77+
78+
$this->assertEquals(2, $response->json('recordsTotal'));
79+
$this->assertEquals(1, $response->json('recordsFiltered'));
80+
}
81+
5982
protected function setUp(): void
6083
{
6184
parent::setUp();
6285

63-
$this->app['router']->get('/users', function (UsersDataTable $dataTable) {
86+
$router = $this->app['router'];
87+
$router->get('/users', function (UsersDataTable $dataTable) {
6488
return $dataTable->render('tests::users');
6589
});
90+
91+
$router->get('/users/before', function (UsersDataTable $dataTable) {
92+
return $dataTable->before(function (EloquentDataTable $dataTable) {
93+
$dataTable->addColumn('nameX', fn(User $user) => $user->name.'X');
94+
})->render('tests::users');
95+
});
96+
97+
$router->get('/users/response', function (UsersDataTable $dataTable) {
98+
return $dataTable->response(function (Collection $data) {
99+
$data['recordsTotal'] = 2;
100+
$data['recordsFiltered'] = 1;
101+
102+
return $data;
103+
})->render('tests::users');
104+
});
66105
}
67106
}

0 commit comments

Comments
 (0)