Skip to content

Commit b416e5a

Browse files
Fix having null as the filter query parameter name
1 parent d000feb commit b416e5a

File tree

3 files changed

+42
-13
lines changed

3 files changed

+42
-13
lines changed

tests/FilterTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
it('can filter models by partial property by default', function () {
2020
$models = createQueryFromFilterRequest([
21-
'name' => $this->models->first()->name,
22-
])
21+
'name' => $this->models->first()->name,
22+
])
2323
->allowedFilters('name')
2424
->get();
2525

tests/QueryBuilderEndpointTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
use Spatie\QueryBuilder\QueryBuilder;
4+
use Spatie\QueryBuilder\Tests\TestClasses\Models\TestModel;
5+
6+
it('can instantiate the query builder and filter the query for an actual api request', function () {
7+
TestModel::factory()->create();
8+
9+
config(['query-builder.parameters.filter' => null]);
10+
11+
Route::get('/test-request', function () {
12+
return QueryBuilder::for(TestModel::class)
13+
->allowedIncludes(['group', 'incidents'])
14+
->allowedFilters(['name', 'status', 'enabled'])
15+
->allowedSorts(['name', 'order', 'id'])
16+
->simplePaginate(request('per_page', 15));
17+
});
18+
19+
$response = $this->getJson('/test-request');
20+
21+
$response->assertOk();
22+
$response->assertJsonCount(1, 'data');
23+
});

tests/QueryBuilderRequestTest.php

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@
7575
});
7676

7777
it('can get the sort query param from the request body', function () {
78-
config(['query-builder.request_data_source' => 'body']);
79-
8078
$request = new QueryBuilderRequest([], [
8179
'sort' => 'foobar',
8280
], [], [], [], ['REQUEST_METHOD' => 'POST']);
@@ -135,8 +133,6 @@
135133
});
136134

137135
it('can get the filter query params from the request body', function () {
138-
config(['query-builder.request_data_source' => 'body']);
139-
140136
$request = new QueryBuilderRequest([], [
141137
'filter' => [
142138
'foo' => 'bar',
@@ -152,7 +148,7 @@
152148
expect($request->filters())->toEqual($expected);
153149
});
154150

155-
it('can get different filter query parameter name', function () {
151+
it('can use different filter query parameter name', function () {
156152
config(['query-builder.parameters.filter' => 'filters']);
157153

158154
$request = new QueryBuilderRequest([
@@ -170,6 +166,22 @@
170166
expect($request->filters())->toEqual($expected);
171167
});
172168

169+
it('can use null as the filter query parameter name', function () {
170+
config(['query-builder.parameters.filter' => null]);
171+
172+
$request = new QueryBuilderRequest([
173+
'foo' => 'bar',
174+
'baz' => 'qux,lex',
175+
]);
176+
177+
$expected = collect([
178+
'foo' => 'bar',
179+
'baz' => ['qux', 'lex'],
180+
]);
181+
182+
expect($request->filters())->toEqual($expected);
183+
});
184+
173185
it('can get empty filters', function () {
174186
config(['query-builder.parameters.filter' => 'filters']);
175187

@@ -264,8 +276,6 @@
264276
});
265277

266278
it('can get the include from the request body', function () {
267-
config(['query-builder.request_data_source' => 'body']);
268-
269279
$request = new QueryBuilderRequest([], [
270280
'include' => 'foo,bar',
271281
], [], [], [], ['REQUEST_METHOD' => 'POST']);
@@ -350,8 +360,6 @@
350360
});
351361

352362
it('can get requested fields from the request body', function () {
353-
config(['query-builder.request_data_source' => 'body']);
354-
355363
$request = new QueryBuilderRequest([], [
356364
'fields' => [
357365
'table' => 'name,email',
@@ -408,8 +416,6 @@
408416
});
409417

410418
it('can get the append query params from the request body', function () {
411-
config(['query-builder.request_data_source' => 'body']);
412-
413419
$request = new QueryBuilderRequest([], [
414420
'append' => 'foo,bar',
415421
], [], [], [], ['REQUEST_METHOD' => 'POST']);

0 commit comments

Comments
 (0)