Skip to content

Commit

Permalink
Fix having null as the filter query parameter name
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexVanderbist committed Sep 8, 2023
1 parent d000feb commit b416e5a
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 13 deletions.
4 changes: 2 additions & 2 deletions tests/FilterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@

it('can filter models by partial property by default', function () {
$models = createQueryFromFilterRequest([
'name' => $this->models->first()->name,
])
'name' => $this->models->first()->name,
])
->allowedFilters('name')
->get();

Expand Down
23 changes: 23 additions & 0 deletions tests/QueryBuilderEndpointTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

use Spatie\QueryBuilder\QueryBuilder;
use Spatie\QueryBuilder\Tests\TestClasses\Models\TestModel;

it('can instantiate the query builder and filter the query for an actual api request', function () {
TestModel::factory()->create();

config(['query-builder.parameters.filter' => null]);

Route::get('/test-request', function () {
return QueryBuilder::for(TestModel::class)
->allowedIncludes(['group', 'incidents'])
->allowedFilters(['name', 'status', 'enabled'])
->allowedSorts(['name', 'order', 'id'])
->simplePaginate(request('per_page', 15));
});

$response = $this->getJson('/test-request');

$response->assertOk();
$response->assertJsonCount(1, 'data');
});
28 changes: 17 additions & 11 deletions tests/QueryBuilderRequestTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,6 @@
});

it('can get the sort query param from the request body', function () {
config(['query-builder.request_data_source' => 'body']);

$request = new QueryBuilderRequest([], [
'sort' => 'foobar',
], [], [], [], ['REQUEST_METHOD' => 'POST']);
Expand Down Expand Up @@ -135,8 +133,6 @@
});

it('can get the filter query params from the request body', function () {
config(['query-builder.request_data_source' => 'body']);

$request = new QueryBuilderRequest([], [
'filter' => [
'foo' => 'bar',
Expand All @@ -152,7 +148,7 @@
expect($request->filters())->toEqual($expected);
});

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

$request = new QueryBuilderRequest([
Expand All @@ -170,6 +166,22 @@
expect($request->filters())->toEqual($expected);
});

it('can use null as the filter query parameter name', function () {
config(['query-builder.parameters.filter' => null]);

$request = new QueryBuilderRequest([
'foo' => 'bar',
'baz' => 'qux,lex',
]);

$expected = collect([
'foo' => 'bar',
'baz' => ['qux', 'lex'],
]);

expect($request->filters())->toEqual($expected);
});

it('can get empty filters', function () {
config(['query-builder.parameters.filter' => 'filters']);

Expand Down Expand Up @@ -264,8 +276,6 @@
});

it('can get the include from the request body', function () {
config(['query-builder.request_data_source' => 'body']);

$request = new QueryBuilderRequest([], [
'include' => 'foo,bar',
], [], [], [], ['REQUEST_METHOD' => 'POST']);
Expand Down Expand Up @@ -350,8 +360,6 @@
});

it('can get requested fields from the request body', function () {
config(['query-builder.request_data_source' => 'body']);

$request = new QueryBuilderRequest([], [
'fields' => [
'table' => 'name,email',
Expand Down Expand Up @@ -408,8 +416,6 @@
});

it('can get the append query params from the request body', function () {
config(['query-builder.request_data_source' => 'body']);

$request = new QueryBuilderRequest([], [
'append' => 'foo,bar',
], [], [], [], ['REQUEST_METHOD' => 'POST']);
Expand Down

0 comments on commit b416e5a

Please sign in to comment.