From 5418d9bf90c9ae7c468d04bfac7741771193da91 Mon Sep 17 00:00:00 2001 From: adamgroom Date: Sat, 11 May 2024 14:14:00 +0100 Subject: [PATCH 1/3] renamed filter fields bug renamedFilterFields were being ignored when filterFields was not set --- src/Traits/Filterable.php | 6 ++++- tests/Feature/RenameFilterableFieldsTest.php | 24 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/Traits/Filterable.php b/src/Traits/Filterable.php index e6a14d0..57b0d5e 100644 --- a/src/Traits/Filterable.php +++ b/src/Traits/Filterable.php @@ -120,7 +120,7 @@ public function getField(string $field): string */ public function availableFields(): array { - if (!isset($this->filterFields)) { + if (!isset($this->filterFields) && !isset($this->renamedFilterFields)) { return array_merge($this->getTableColumns(), $this->relations()); } @@ -138,6 +138,10 @@ public function getUserDefinedFilterFields(): array return $this->userDefinedFilterFields; } + if (isset($this->renamedFilterFields)) { + return $this->userDefinedFilterFields = $this->renamedFilterFields; + } + $userDefinedFilterFields = []; foreach ($this->filterFields as $key => $value) { diff --git a/tests/Feature/RenameFilterableFieldsTest.php b/tests/Feature/RenameFilterableFieldsTest.php index 82aaf80..0691f69 100644 --- a/tests/Feature/RenameFilterableFieldsTest.php +++ b/tests/Feature/RenameFilterableFieldsTest.php @@ -89,4 +89,28 @@ public function it_can_overwrite_rename_filter_fields_in_eloquent_builder(): voi // It returns o records as builder level filters take priority $response->assertJsonCount(1); } + + /** @test */ + public function rename_filter_fields_works_when_filter_fields_not_set(): void + { + $post = new Post(); + $post->renamedFilterFields = ['invalid_column' => 'post_title']; // invalid column name + + $post->create([ + 'title' => 'title_1', + ])->create([ + 'title' => 'title_2', + ]); + + Route::get('/posts', function () use ($post) { + // reset with valid column name + return $post->renamedFilterFields(['title' => 'post_title'])->filter()->get(); + }); + + $response = $this->getJson('/posts?filters[post_title][$eq]=title_1'); + + $response->assertOk(); + + $response->assertJsonCount(1); + } } From 78f62ae251db6b38f80f429acb7fde677ff0b380 Mon Sep 17 00:00:00 2001 From: adamgroom Date: Sat, 11 May 2024 14:21:56 +0100 Subject: [PATCH 2/3] formatting issue --- src/Traits/Filterable.php | 2 +- tests/Feature/RenameFilterableFieldsTest.php | 46 ++++++++++---------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/Traits/Filterable.php b/src/Traits/Filterable.php index 57b0d5e..f28a58f 100644 --- a/src/Traits/Filterable.php +++ b/src/Traits/Filterable.php @@ -120,7 +120,7 @@ public function getField(string $field): string */ public function availableFields(): array { - if (!isset($this->filterFields) && !isset($this->renamedFilterFields)) { + if (!isset($this->filterFields) && !isset($this->renamedFilterFields)) { return array_merge($this->getTableColumns(), $this->relations()); } diff --git a/tests/Feature/RenameFilterableFieldsTest.php b/tests/Feature/RenameFilterableFieldsTest.php index 0691f69..c978a56 100644 --- a/tests/Feature/RenameFilterableFieldsTest.php +++ b/tests/Feature/RenameFilterableFieldsTest.php @@ -90,27 +90,27 @@ public function it_can_overwrite_rename_filter_fields_in_eloquent_builder(): voi $response->assertJsonCount(1); } - /** @test */ - public function rename_filter_fields_works_when_filter_fields_not_set(): void - { - $post = new Post(); - $post->renamedFilterFields = ['invalid_column' => 'post_title']; // invalid column name - - $post->create([ - 'title' => 'title_1', - ])->create([ - 'title' => 'title_2', - ]); - - Route::get('/posts', function () use ($post) { - // reset with valid column name - return $post->renamedFilterFields(['title' => 'post_title'])->filter()->get(); - }); - - $response = $this->getJson('/posts?filters[post_title][$eq]=title_1'); - - $response->assertOk(); - - $response->assertJsonCount(1); - } + /** @test */ + public function rename_filter_fields_works_when_filter_fields_not_set(): void + { + $post = new Post(); + $post->renamedFilterFields = ['invalid_column' => 'post_title']; // invalid column name + + $post->create([ + 'title' => 'title_1', + ])->create([ + 'title' => 'title_2', + ]); + + Route::get('/posts', function () use ($post) { + // reset with valid column name + return $post->renamedFilterFields(['title' => 'post_title'])->filter()->get(); + }); + + $response = $this->getJson('/posts?filters[post_title][$eq]=title_1'); + + $response->assertOk(); + + $response->assertJsonCount(1); + } } From d8c7f05dcab3a7e6a451c204a2eac594d2772e62 Mon Sep 17 00:00:00 2001 From: adamgroom Date: Sat, 11 May 2024 14:24:52 +0100 Subject: [PATCH 3/3] style issue --- tests/Feature/RenameFilterableFieldsTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Feature/RenameFilterableFieldsTest.php b/tests/Feature/RenameFilterableFieldsTest.php index c978a56..d68a109 100644 --- a/tests/Feature/RenameFilterableFieldsTest.php +++ b/tests/Feature/RenameFilterableFieldsTest.php @@ -110,7 +110,6 @@ public function rename_filter_fields_works_when_filter_fields_not_set(): void $response = $this->getJson('/posts?filters[post_title][$eq]=title_1'); $response->assertOk(); - $response->assertJsonCount(1); } }