From b3eed68f5fe3cdce0537e9c28931e88376e7999c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Witold=20Wi=C5=9Bniewski?= Date: Mon, 25 Sep 2023 14:17:30 +0200 Subject: [PATCH] Fix product filter and sort --- app/Criteria/ProductSearch.php | 8 +++--- tests/Feature/ProductSearchDatabaseTest.php | 28 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/Criteria/ProductSearch.php b/app/Criteria/ProductSearch.php index b548657c5..0846f7de5 100644 --- a/app/Criteria/ProductSearch.php +++ b/app/Criteria/ProductSearch.php @@ -10,10 +10,10 @@ class ProductSearch extends Criterion public function query(Builder $query): Builder { return $query->whereFullText([ - 'name', - 'description_html', - 'description_short', - 'search_values', + 'products.name', + 'products.description_html', + 'products.description_short', + 'products.search_values', ], $this->value); } } diff --git a/tests/Feature/ProductSearchDatabaseTest.php b/tests/Feature/ProductSearchDatabaseTest.php index 3ddb0382a..22eacf7a6 100644 --- a/tests/Feature/ProductSearchDatabaseTest.php +++ b/tests/Feature/ProductSearchDatabaseTest.php @@ -80,6 +80,34 @@ public function testIndexIdsSearch($user): void ->assertJsonCount(2, 'data'); } + /** + * @dataProvider authProvider + */ + public function testIndexSearch($user): void + { + $this->{$user}->givePermissionTo('products.show'); + + Product::factory()->create([ + 'public' => true, + 'name' => 'First', + ]); + + Product::factory()->create([ + 'public' => true, + 'created_at' => Carbon::now()->addHour(), + 'name' => 'Second', + ]); + + // This test check if there is no SQL error that 'name' is ambiguous + $this + ->actingAs($this->{$user}) + ->json('GET', '/products', [ + 'search' => 'First', + 'sort' => 'attribute.data-wydania:desc', + ]) + ->assertOk(); + } + /** * @dataProvider authProvider */