Skip to content

Commit a4f37b7

Browse files
committed
Add tests for yajra#2084.
1 parent 3561959 commit a4f37b7

File tree

2 files changed

+39
-7
lines changed

2 files changed

+39
-7
lines changed

tests/Integration/EloquentDataTableTest.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Yajra\DataTables\DataTables;
66
use Illuminate\Http\JsonResponse;
77
use Yajra\DataTables\Tests\TestCase;
8+
use Yajra\DataTables\Tests\Models\Post;
89
use Yajra\DataTables\EloquentDataTable;
910
use Yajra\DataTables\Tests\Models\User;
1011
use Illuminate\Foundation\Testing\DatabaseTransactions;
@@ -33,7 +34,7 @@ public function it_can_perform_global_search()
3334
['data' => 'name', 'name' => 'name', 'searchable' => 'true', 'orderable' => 'true'],
3435
['data' => 'email', 'name' => 'email', 'searchable' => 'true', 'orderable' => 'true'],
3536
],
36-
'search' => ['value' => 'Record-19'],
37+
'search' => ['value' => 'Record-19'],
3738
]);
3839

3940
$crawler->assertJson([
@@ -88,12 +89,28 @@ public function it_accepts_a_model_using_ioc_container_factory()
8889
$this->assertInstanceOf(JsonResponse::class, $response);
8990
}
9091

92+
/** @test */
93+
public function it_returns_only_the_selected_columns_with_dotted_notation()
94+
{
95+
$json = $this->call('GET', '/eloquent/only')->json();
96+
$this->assertArrayNotHasKey('id', $json['data'][0]);
97+
$this->assertArrayHasKey('title', $json['data'][0]);
98+
$this->assertArrayNotHasKey('id', $json['data'][0]['user']);
99+
$this->assertArrayHasKey('name', $json['data'][0]['user']);
100+
}
101+
91102
protected function setUp(): void
92103
{
93104
parent::setUp();
94105

95106
$this->app['router']->get('/eloquent/users', function (DataTables $datatables) {
96107
return $datatables->eloquent(User::query())->toJson();
97108
});
109+
110+
$this->app['router']->get('/eloquent/only', function (DataTables $datatables) {
111+
return $datatables->eloquent(Post::with('user'))
112+
->only(['title', 'user.name'])
113+
->toJson();
114+
});
98115
}
99116
}

tests/Integration/QueryDataTableTest.php

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function it_can_perform_global_search()
3434
['data' => 'name', 'name' => 'name', 'searchable' => 'true', 'orderable' => 'true'],
3535
['data' => 'email', 'name' => 'email', 'searchable' => 'true', 'orderable' => 'true'],
3636
],
37-
'search' => ['value' => 'Record-19'],
37+
'search' => ['value' => 'Record-19'],
3838
]);
3939

4040
$crawler->assertJson([
@@ -52,7 +52,7 @@ public function it_can_skip_total_records_count_query()
5252
['data' => 'name', 'name' => 'name', 'searchable' => 'true', 'orderable' => 'true'],
5353
['data' => 'email', 'name' => 'email', 'searchable' => 'true', 'orderable' => 'true'],
5454
],
55-
'search' => ['value' => 'Record-19'],
55+
'search' => ['value' => 'Record-19'],
5656
]);
5757

5858
$crawler->assertJson([
@@ -70,7 +70,7 @@ public function it_can_perform_multiple_term_global_search()
7070
['data' => 'name', 'name' => 'name', 'searchable' => 'true', 'orderable' => 'true'],
7171
['data' => 'email', 'name' => 'email', 'searchable' => 'true', 'orderable' => 'true'],
7272
],
73-
'search' => ['value' => 'Record-19 Email-19'],
73+
'search' => ['value' => 'Record-19 Email-19'],
7474
]);
7575

7676
$crawler->assertJson([
@@ -143,7 +143,7 @@ public function it_does_not_allow_search_on_added_columns()
143143
['data' => 'name', 'name' => 'name', 'searchable' => 'true', 'orderable' => 'true'],
144144
['data' => 'email', 'name' => 'email', 'searchable' => 'true', 'orderable' => 'true'],
145145
],
146-
'search' => ['value' => 'Record-19'],
146+
'search' => ['value' => 'Record-19'],
147147
]);
148148

149149
$crawler->assertJson([
@@ -153,6 +153,14 @@ public function it_does_not_allow_search_on_added_columns()
153153
]);
154154
}
155155

156+
/** @test */
157+
public function it_returns_only_the_selected_columns()
158+
{
159+
$json = $this->call('GET', '/query/only')->json();
160+
$this->assertArrayNotHasKey('id', $json['data'][0]);
161+
$this->assertArrayHasKey('name', $json['data'][0]);
162+
}
163+
156164
/** @test */
157165
public function it_does_not_allow_raw_html_on_added_columns()
158166
{
@@ -187,7 +195,7 @@ public function it_can_return_auto_index_column()
187195
['data' => 'name', 'name' => 'name', 'searchable' => 'true', 'orderable' => 'true'],
188196
['data' => 'email', 'name' => 'email', 'searchable' => 'true', 'orderable' => 'true'],
189197
],
190-
'search' => ['value' => 'Record-19'],
198+
'search' => ['value' => 'Record-19'],
191199
]);
192200

193201
$crawler->assertJson([
@@ -208,7 +216,7 @@ public function it_allows_search_on_added_column_with_custom_filter_handler()
208216
['data' => 'name', 'name' => 'name', 'searchable' => 'true', 'orderable' => 'true'],
209217
['data' => 'email', 'name' => 'email', 'searchable' => 'true', 'orderable' => 'true'],
210218
],
211-
'search' => ['value' => 'Record-19'],
219+
'search' => ['value' => 'Record-19'],
212220
]);
213221

214222
$crawler->assertJson([
@@ -256,6 +264,13 @@ protected function setUp(): void
256264
->toJson();
257265
});
258266

267+
$route->get('/query/only', function (DataTables $dataTable) {
268+
return $dataTable->query(DB::table('users'))
269+
->addColumn('foo', 'bar')
270+
->only(['name'])
271+
->toJson();
272+
});
273+
259274
$route->get('/query/xss-add', function (DataTables $dataTable) {
260275
return $dataTable->query(DB::table('users'))
261276
->addColumn('foo', '<a href="#">Allowed</a>')

0 commit comments

Comments
 (0)