|
4 | 4 |
|
5 | 5 | use Illuminate\Foundation\Testing\DatabaseTransactions;
|
6 | 6 | use Illuminate\Http\Response;
|
| 7 | +use Illuminate\Support\Collection; |
7 | 8 | use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
8 | 9 | use Yajra\DataTables\Buttons\Tests\DataTables\UsersDataTable;
|
| 10 | +use Yajra\DataTables\Buttons\Tests\Models\User; |
| 11 | +use Yajra\DataTables\EloquentDataTable; |
9 | 12 |
|
10 | 13 | class DataTableServiceTest extends TestCase
|
11 | 14 | {
|
@@ -56,12 +59,48 @@ public function it_can_return_a_pdf_file()
|
56 | 59 | $this->assertInstanceOf(Response::class, $response->baseResponse);
|
57 | 60 | }
|
58 | 61 |
|
| 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 | + |
59 | 82 | protected function setUp(): void
|
60 | 83 | {
|
61 | 84 | parent::setUp();
|
62 | 85 |
|
63 |
| - $this->app['router']->get('/users', function (UsersDataTable $dataTable) { |
| 86 | + $router = $this->app['router']; |
| 87 | + $router->get('/users', function (UsersDataTable $dataTable) { |
64 | 88 | return $dataTable->render('tests::users');
|
65 | 89 | });
|
| 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 | + }); |
66 | 105 | }
|
67 | 106 | }
|
0 commit comments