Skip to content

Commit 1faab72

Browse files
committed
Not required value for default filters
1 parent 3a72f59 commit 1faab72

File tree

4 files changed

+41
-3
lines changed

4 files changed

+41
-3
lines changed

src/Services/Search/RepositorySearchService.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,14 @@ protected function applyFilters(RestifyRequest $request, Repository $repository,
201201
return false;
202202
}
203203

204-
if ($matchingFilter->invalidPayloadValue($request, $filter['value'])) {
204+
if (array_key_exists('value', $filter) && $matchingFilter->invalidPayloadValue($request, $filter['value'])) {
205205
return false;
206206
}
207207

208-
$matchingFilter->resolve($request, $filter['value']);
208+
$matchingFilter->resolve(
209+
$request,
210+
array_key_exists('value', $filter) ? $filter['value'] : null
211+
);
209212

210213
return $matchingFilter;
211214
})

tests/Controllers/RepositoryFilterControllerTest.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Binaryk\LaravelRestify\Tests\Fixtures\Post\ActiveBooleanFilter;
66
use Binaryk\LaravelRestify\Tests\Fixtures\Post\CreatedAfterDateFilter;
7+
use Binaryk\LaravelRestify\Tests\Fixtures\Post\InactiveFilter;
78
use Binaryk\LaravelRestify\Tests\Fixtures\Post\Post;
89
use Binaryk\LaravelRestify\Tests\Fixtures\Post\SelectCategoryFilter;
910
use Binaryk\LaravelRestify\Tests\Fixtures\User\UserRepository;
@@ -17,7 +18,26 @@ public function test_can_get_available_filters()
1718
->withoutExceptionHandling()
1819
->getJson('restify-api/posts/filters');
1920

20-
$this->assertCount(3, $response->json('data'));
21+
$this->assertCount(4, $response->json('data'));
22+
}
23+
24+
public function test_value_filter_doesnt_require_value()
25+
{
26+
factory(Post::class)->create(['is_active' => false]);
27+
factory(Post::class)->create(['is_active' => true]);
28+
29+
$filters = base64_encode(json_encode([
30+
[
31+
'class' => InactiveFilter::class,
32+
],
33+
]));
34+
35+
$response = $this
36+
->withoutExceptionHandling()
37+
->getJson('restify-api/posts?filters='.$filters)
38+
->assertStatus(200);
39+
40+
$this->assertCount(1, $response->json('data'));
2141
}
2242

2343
public function test_the_boolean_filter_is_applied()
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace Binaryk\LaravelRestify\Tests\Fixtures\Post;
4+
5+
use Binaryk\LaravelRestify\Filter;
6+
use Binaryk\LaravelRestify\Http\Requests\RestifyRequest;
7+
8+
class InactiveFilter extends Filter
9+
{
10+
public function filter(RestifyRequest $request, $query, $value)
11+
{
12+
$query->where('is_active', false);
13+
}
14+
}

tests/Fixtures/Post/PostRepository.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ public function filters(RestifyRequest $request)
8080
ActiveBooleanFilter::new()->canSee(fn () => true),
8181
SelectCategoryFilter::new(),
8282
CreatedAfterDateFilter::new(),
83+
InactiveFilter::new(),
8384
];
8485
}
8586

0 commit comments

Comments
 (0)