From 3960bf0090caad8d9e6e8a3f4d57cc055c4be1c3 Mon Sep 17 00:00:00 2001 From: Joshua Blum Date: Fri, 29 May 2026 15:55:59 +0200 Subject: [PATCH 1/2] Fix field filters when using `0` value --- src/Query/Scopes/Filters/Fields/FieldtypeFilter.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Query/Scopes/Filters/Fields/FieldtypeFilter.php b/src/Query/Scopes/Filters/Fields/FieldtypeFilter.php index a846175fac..5ec1767648 100644 --- a/src/Query/Scopes/Filters/Fields/FieldtypeFilter.php +++ b/src/Query/Scopes/Filters/Fields/FieldtypeFilter.php @@ -84,8 +84,6 @@ public function badge($values) public function isComplete($values): bool { - $values = array_filter($values); - if (! $operator = Arr::get($values, 'operator')) { return false; } @@ -94,6 +92,8 @@ public function isComplete($values): bool return true; } - return Arr::has($values, 'value'); + $value = Arr::get($values, 'value'); + + return $value !== null && $value !== ''; } } From 186c08ccd859dd42e1ef1fb61befcf1d8789fbf8 Mon Sep 17 00:00:00 2001 From: Joshua Blum Date: Fri, 29 May 2026 16:01:17 +0200 Subject: [PATCH 2/2] Add test --- tests/Query/FieldtypeFilterTest.php | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/Query/FieldtypeFilterTest.php diff --git a/tests/Query/FieldtypeFilterTest.php b/tests/Query/FieldtypeFilterTest.php new file mode 100644 index 0000000000..5aa3e14f23 --- /dev/null +++ b/tests/Query/FieldtypeFilterTest.php @@ -0,0 +1,36 @@ +setField(new Field('test', ['type' => 'text']))->filter(); + + $this->assertEquals($expected, $filter->isComplete($values)); + } + + public static function completenessProvider() + { + return [ + 'no operator' => [['value' => 'foo'], false], + 'operator but no value' => [['operator' => '='], false], + 'operator and value' => [['operator' => '=', 'value' => 'foo'], true], + 'zero string value' => [['operator' => '=', 'value' => '0'], true], + 'zero integer value' => [['operator' => '=', 'value' => 0], true], + 'null value' => [['operator' => '=', 'value' => null], false], + 'empty string value' => [['operator' => '=', 'value' => ''], false], + 'null operator without value' => [['operator' => 'null'], true], + 'not-null operator without value' => [['operator' => 'not-null'], true], + ]; + } +}