From 7b02582b79d5f681850829e759479f2111853a66 Mon Sep 17 00:00:00 2001 From: Talpx1 Date: Mon, 9 Sep 2024 10:26:22 +0000 Subject: [PATCH 1/3] Fix styling --- src/Filters/FiltersPartial.php | 2 +- tests/FilterTest.php | 1 - tests/SortTest.php | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Filters/FiltersPartial.php b/src/Filters/FiltersPartial.php index f5c38385..77db819c 100644 --- a/src/Filters/FiltersPartial.php +++ b/src/Filters/FiltersPartial.php @@ -74,7 +74,7 @@ protected static function escapeLike(string $value): string */ protected static function maybeSpecifyEscapeChar(string $driver): string { - if(! in_array($driver, ['sqlite','pgsql','sqlsrv'])) { + if (! in_array($driver, ['sqlite','pgsql','sqlsrv'])) { return ''; } diff --git a/tests/FilterTest.php b/tests/FilterTest.php index 80b971be..650abbd9 100644 --- a/tests/FilterTest.php +++ b/tests/FilterTest.php @@ -4,7 +4,6 @@ use Illuminate\Http\Request; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\DB; - use Pest\Expectation; use function PHPUnit\Framework\assertObjectHasProperty; diff --git a/tests/SortTest.php b/tests/SortTest.php index 95534beb..6fd3de5b 100644 --- a/tests/SortTest.php +++ b/tests/SortTest.php @@ -14,7 +14,6 @@ use Spatie\QueryBuilder\Sorts\Sort as SortInterface; use Spatie\QueryBuilder\Sorts\SortsField; use Spatie\QueryBuilder\Tests\Concerns\AssertsCollectionSorting; - use Spatie\QueryBuilder\Tests\TestClasses\Models\TestModel; uses(AssertsCollectionSorting::class); From 0033fe15ff9e8b693f42a5abff265d1fdffc6604 Mon Sep 17 00:00:00 2001 From: Talpx1 Date: Mon, 9 Sep 2024 13:07:56 +0200 Subject: [PATCH 2/3] Removed explicit escaping for pgsql driver in FilterPartial#maybeSpecifyEscapeChar. Fixes #941 Added mariadb driver in FilterPartial#maybeSpecifyEscapeChar phpdoc for param $driver. Also adjusted test in order to run with mariadb driver only if the installed version of illuminate/database dependency supports the driver. --- src/Filters/FiltersPartial.php | 4 ++-- tests/FilterTest.php | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Filters/FiltersPartial.php b/src/Filters/FiltersPartial.php index 77db819c..31d77100 100644 --- a/src/Filters/FiltersPartial.php +++ b/src/Filters/FiltersPartial.php @@ -69,12 +69,12 @@ protected static function escapeLike(string $value): string } /** - * @param 'sqlite'|'pgsql'|'sqlsrc'|'mysql' $driver + * @param 'sqlite'|'pgsql'|'sqlsrc'|'mysql'|'mariadb' $driver * @return string */ protected static function maybeSpecifyEscapeChar(string $driver): string { - if (! in_array($driver, ['sqlite','pgsql','sqlsrv'])) { + if (! in_array($driver, ['sqlite','sqlsrv'])) { return ''; } diff --git a/tests/FilterTest.php b/tests/FilterTest.php index 650abbd9..69911a19 100644 --- a/tests/FilterTest.php +++ b/tests/FilterTest.php @@ -91,6 +91,10 @@ }); it('specifies escape character in supported databases', function (string $dbDriver) { + if($dbDriver === 'mariadb' && !in_array('mariadb', DB::supportedDrivers())){ + $this->markTestSkipped('mariadb driver not supported in the installed version of illuminate/database dependency'); + } + $fakeConnection = "test_{$dbDriver}"; DB::connectUsing($fakeConnection, [ @@ -99,6 +103,7 @@ ]); DB::usingConnection($fakeConnection, function () use ($dbDriver) { + $request = new Request([ 'filter' => ['name' => 'to_find'], ]); @@ -107,10 +112,10 @@ ->allowedFilters('name', 'id') ->toSql(); - expect($queryBuilderSql)->when(in_array($dbDriver, ["sqlite","pgsql","sqlsrv"]), fn (Expectation $query) => $query->toContain("ESCAPE '\'")); - expect($queryBuilderSql)->when($dbDriver === 'mysql', fn (Expectation $query) => $query->not->toContain("ESCAPE '\'")); + expect($queryBuilderSql)->when(in_array($dbDriver, ["sqlite","sqlsrv"]), fn (Expectation $query) => $query->toContain("ESCAPE '\'")); + expect($queryBuilderSql)->when(in_array($dbDriver, ["mysql","mariadb", "pgsql"]), fn (Expectation $query) => $query->not->toContain("ESCAPE '\'")); }); -})->with(['sqlite', 'mysql', 'pgsql', 'sqlsrv']); +})->with(['sqlite', 'mysql', 'pgsql', 'sqlsrv', 'mariadb']); it('can filter results based on the existence of a property in an array', function () { $results = createQueryFromFilterRequest([ From 485430a726e4ed5bc386f29857ef8a8229d41c07 Mon Sep 17 00:00:00 2001 From: Talpx1 Date: Mon, 9 Sep 2024 11:09:14 +0000 Subject: [PATCH 3/3] Fix styling --- tests/FilterTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/FilterTest.php b/tests/FilterTest.php index 69911a19..9bd27757 100644 --- a/tests/FilterTest.php +++ b/tests/FilterTest.php @@ -91,7 +91,7 @@ }); it('specifies escape character in supported databases', function (string $dbDriver) { - if($dbDriver === 'mariadb' && !in_array('mariadb', DB::supportedDrivers())){ + if ($dbDriver === 'mariadb' && ! in_array('mariadb', DB::supportedDrivers())) { $this->markTestSkipped('mariadb driver not supported in the installed version of illuminate/database dependency'); } @@ -103,7 +103,7 @@ ]); DB::usingConnection($fakeConnection, function () use ($dbDriver) { - + $request = new Request([ 'filter' => ['name' => 'to_find'], ]);